我正在構建一個win32可執行文件。編譯器是MinGW的最新版本。庫依賴關係是GLUT和libpng。缺少zlib.dll
我首先在Windows 7機器上測試過,並且必須獲得libpng3.dll和freeglut32.dll。但是,在XP上,我必須(另外)獲取zlib1.dll。
XP機器是全新安裝的虛擬機,所以我懷疑新的win7機器可能也缺乏zlib1。
我的問題是如何去找出我需要分發哪些dll?我怎麼知道,先驗,我的程序需要哪些動態庫在特定系統上運行?我想這是安裝程序的用途......我猜測安裝程序所做的是通過系統查找哪些依賴性不滿意,然後提供它們。所以這樣,如果我要分發我的程序,我可以檢查用戶的機器是否已經有zlib1.dll,並且如果它已經在系統目錄中找到,我將不會安裝zlib1.dll。然而,我從來沒有找到特別對我說的文檔,「libpng需要zlib」,所以,直到我在缺乏zlib的機器上測試可執行文件時,我並不知道這種依賴關係。我怎樣才能創建我的依賴列表,而無需全新安裝每個操作系統的每個版本進行測試?
我的一個想法是反編譯可執行文件,或者通過某種方法檢查鏈接過程,找到所有在運行時鏈接的庫。現在問題變成找出哪些應該已經存在,以及哪些我可以預期在分配中提供。
編輯:好吧,我看了,我下載的libpng的安裝在它的bin目錄中提供了zlib1.dll。所以不包括它幾乎是我的錯。無論如何,丹尼爾的答案是確定的。
這是完全真棒。謝謝。 – 2011-02-16 05:43:28
幾乎每個涉及DLL的問題都有一個答案指向這個工具:)) – Daniel 2011-02-16 06:49:20