2011-03-30 37 views
2

HI,MSVC - C++ - 發佈版本失敗 - 連接錯誤

如果我試圖建立和釋放模式鏈接我的應用程序,我得到了鏈接錯誤:

Error 72 error LNK2001: unresolved external symbol "public: __thiscall MyModels::MT6::MT6(double)" ([email protected]@@[email protected]@Z) C:\Martin\Programing\WoknaTest\WoknaTest\DXForm.obj WoknaTest

在調試模式下一切正常罰款....可能有什麼錯誤?

感謝

+0

好吧..我發現的問題..我的* .h文件之一是incorectly設置爲C/C++ * .cpp文件:/即使延長是我沒有使用任何特殊的圖書館的* .h – Perry 2011-03-30 15:46:28

回答

3

我會檢查所有的.lib包括和DLL包含在發佈和調試模式下的項目設置。

對此的解決方案可能在項目設置中用於鏈接某處(包括.lib .dll或路徑包含),但我無法真正告訴你信息中的確切位置。你提供。

5

從它在調試配置中成功構建的事實判斷,我的第一個建議是檢查提供給鏈接器的附加依賴項。此設置將在Project -> Properties -> Configuration Properties -> Linker -> Input下設置爲Additional Dependencies。確保此設置與調試配置下的內容匹配,假定沒有特定於調試構建的庫名稱。

+0

... – Perry 2011-03-30 11:28:10

+0

@Perry:MyModels :: MT6 :: MT6在哪裏定義呢?它不在#ifdef DEBUG或某些類似下,是嗎? – 2011-03-30 11:30:49

+1

沒有..它只有#ifndef VOXEL_LOADER_H #define VOXEL_LOADER_H ... <代碼 - 沒有使用外部庫> #endif – Perry 2011-03-30 11:35:47

2

最有可能的版本(假設您沒有手動編輯您的項目設置)是由於您的代碼引用了一些庫,並且您沒有發佈版本的庫。通常,鏈接器引用具有「d」後綴的庫用於調試,並且沒有它用於發佈。

例如:您的解決方案中有一個VectorMath項目。該項目默認在調試配置中創建一個庫vectormathd.lib,並在發佈中創建vectormath.lib。如果你的依賴關係被搞砸了,而你從來沒有構建過vectormath的發佈版本,那麼你將在發佈版本中構建你的主項目,並且它將會尋找你不會擁有的vectormath.lib - 因此這是無法解析的外部符號。解決方案是確保所有項目都是在發佈模式下構建的,或者修復依賴關係以讓VS爲您做到這一點。