1. 程式人生 > >QT 連結庫lib和dll問題

QT 連結庫lib和dll問題

機緣巧合,需要將一個vs2013平臺上的一個小demo轉移到QT上來,複製貼上完,竟然發現使用到得庫函式竟然無法識別(Undefined reference……………………)。

如果以已經正確連結完庫檔案lib和包括了 相關連得標頭檔案,那麼有可能是QT和vs2013的編譯器差異導致的,vs平臺用c++編譯的lib庫在QT平臺上編譯之後,會自動附加一些符號,導致在lib中找不到對應的函式。

這個時候,你可以選擇用c語言的方法重新編譯lib再拿到QT上用。

又或者使用cmd控制檯在lib對應的dll檔案路徑下,使用dumpbin -exports mylib.dll,檢視dll檔案裡面的函式名,在工程裡將函式名

修改,這方法我沒試過,cmd控制檯顯示的dll函式名簡直就是雞腸,不懂編譯的規則,根本看不懂。選擇重新編譯lib檔案時最簡單

方法。

如果使用dumpbin 顯示命令無效,那麼要在visual studio安裝目錄下的\vc\bin目錄下,把vcvars32.bat拖到控制檯,不要關閉控制檯,再執行dumpbin -exports mylib.dll.

也可以在\vc\bin目錄下單擊dump.exe檢視該程式是否缺失對應dll,如果是那麼只能補全之後再執行dumpbin命令。

謝謝大家。