解决程序缺少dll,应用程序无法正常启动的问题

很多时候编译后的程序在开发机能正常运行,而在其它电脑不能跑,原因是缺少dll或者是dll位数不匹配。

所以在打包程序的时候要添加依赖的dll到exe所在目录。要注意dll的位数(32位/64位)要给exe一致。

查看程序依赖dll的方法:

  1. 用Dependency Walker。然后View->Collapse All,就能看到该exe直接依赖的dll:
  2. 用VS自带的dumpbin程序,路径C:\Software\VS2015\VC\bin\dumpbin.exe 也可以直接在开始菜单找到。命令是 dumpbin /dependents XXX.exe

dumpbin的其它用法:

  • dumpbin /imports xxx.exe/dll //也可以看依赖的dll
  • dumpbin /exports xxx.exe/dll //可以看导出的函数
  • dumpbin /headers xxx.exe/dll //可以判断是32位还是64位

详细信息dumpbin /?查看

一般如果缺少dll,双击程序运行的时候,都会提示,但如果是dll的位数不对,例如你的exe是64位的,但是你错误的添加了32位的dll,这时候就会出现以下错误:

如果是该dll位数不对,在depends会看到位数标红了。

如果是缺少该dll,depends里会看到问号。

 

dll找到了之后利用工具Everything就能够快速拷贝dll到目标机器了。这里要注意的是C:\Windows\System32里的是64位dll,C:\Windows\SysWOW64里的是32dll,不要被目录名字骗了。