Windows下開發的應用程序在發布時,需要將其依賴的一些動態鏈接庫一起打進安裝包里面去。這個時候,快速確定這個程序到底依賴哪些動態鏈接庫變得非常重要。很久以前寫過一篇關於Qt程序安裝包制作的博客,里面介紹了Dependency Walker這個小工具。但是實際操作起來並不理想,因為Dependency Walker將exe文件依賴的所有動態庫以及動態庫所依賴的動態庫都列出來了。看得你一臉懵逼:
你很難分清楚:倒底哪些DLL是需要打包的,哪些DLL是系統自帶的。而作為打包過程中的一個小步驟,我根本不需要知道這么多信息。這個時候,我們需要一個更加簡潔明了的工具。dumpbin就是今天要介紹的主角。
二、使用
dumpbin是隨Visual Studio一起發布的,在Visual Studio的“本機工具命令行”中就可以直接使用。使用的第一步就是打開Visual Studio的“本機工具命令行”:
這里我選擇的是“VS2015 X64本機工具命令提示符”。命令行窗口打開后直接進入到工程目錄,輸入命令“dumpbin /IMPORTS ReplaceAETemplate.exe > output.txt”:
Duang~~~,所有依賴的DLL項都保存到output.txt里面去了。打開瞧瞧輸出內容:
依賴的動態庫一項項的非常清晰明了。當然,里面也會列出一些系統的動態庫。這些系統動態庫在系統安裝時就有了,所以不用打包進去。當然就算打包進去也不會有什么害處。這個命令再配合everything這個小工具查找依賴的DLL,簡直不要太爽:
三、小結
dumpbin的IMPORTS參數是用來查看程序依賴的其他動態庫的,這對於可執行程序exe和動態鏈接庫DLL都是適用的。EXPORTS則適用於DLL查看其導出的函數接口:
結果照樣重定位到output.txt中去了。這是因為如果直接在命令行中輸出,前面的內容可能會被截斷,導致內容看不完整。
從上面紅框中可以看出,UniversalBlender.dll這個動態鏈接庫導出了這么一些函數:capabilityAssessment, initializeDevice, runImageBlender等。
http://www.cnblogs.com/csuftzzk/p/windows_application_distribution.html