解決程序缺少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,不要被目錄名字騙了。