2010-04-04 21 views
1

我有一個DLL,我想鏈接一個libjpeg LIB使用MSVC 2008生成未解析的外部符號錯誤的libjpeg函數。我也有一個測試項目,鏈接到完全相同的libjpeg庫文件和鏈接沒有錯誤,並且運行良好。MSVC 2008-無法解析的外部錯誤與LIB,但只與DLL,而不是與EXE項目

我已經三重檢查了我的LIB路徑和相關的LIBS列表設置,並將它們從EXE項目中直接複製並粘貼到DLL項目中。我仍然得到錯誤。我確實有libjpeg頭文件包含extern「C」,因此它不是一個名稱修改問題,而未解析的外部警告顯示「缺少」libjpeg函數爲未修飾的(每個後面只有一個前導下劃線和@ sign參數字節計數後綴名稱)。

當測試EXE項目完全沒有問題時,什麼使鏈接器與DLL項目無法正確地找到函數?我正在使用從ClanLib下載的預編譯的32位靜態多線程調試庫。

感謝, 羅伯特

回答

1

大量實驗後,我找到了解決辦法。事實證明,問題是由於DLL和LIB項目使用的調用約定的不同造成的(在MSVC 2008中,這是在項目屬性中設置的,「配置屬性 - > C/C++ - >高級」設置。項目設置爲__stdcall並且LIB爲__cdecl。使用__stdcall重新編譯LIBJPEG可解決此問題。

相關問題