Windows下程序打包發布時的小技巧(使用Dependency Walker偵測不理想,改用VS自帶的dumpbin則萬無一失,還可查看dll導出的函數)


    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM