很多时候编译后的程序在开发机能正常运行,而在其它电脑不能跑,原因是缺少dll或者是dll位数不匹配。
所以在打包程序的时候要添加依赖的dll到exe所在目录。要注意dll的位数(32位/64位)要给exe一致。
查看程序依赖dll的方法:
- 用Dependency Walker。然后View->Collapse All,就能看到该exe直接依赖的dll:
- 用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,不要被目录名字骗了。