我正在合併DirectX SDK(2010年6月)的VC++ 2010 Windows項目中工作,另一個團隊生成了一個物理庫以合併到程序中。當我經歷和執行所有必要的電話到圖書館,和所有。我也跟着他們給了圖書館整合方向:集成庫導致錯誤C++
extract the director containing the .h files into my c:\
在
C/C++>常規>附加包含目錄的地方
c:\physics_core // without additional additional dependencies
在鏈接器>輸入>附加依賴地方
然後
C:\physics_core\PhysicsCore\Release\PhysicsCore.lib // without additional additional dependencies
然後包括管理器,並使用提供的名稱空間,無論方法和對象需要被調用(intellisence甚至嘗試建議自動完成正確)。但是然後我的編譯器會拋出以下列表。我非常確定,前6個與圖書館本身有關,而其他的則與directX有關。
1> PhysicsCore.lib(PhysicsMgr.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
1>PhysicsCore.lib(PhysicsMgr.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in MainCore.obj
1>PhysicsCore.lib(Box3D.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in MainCore.obj
1>PhysicsCore.lib(Circle3D.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in MainCore.obj
1>PhysicsCore.lib(Box2D.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in MainCore.obj
1>PhysicsCore.lib(Circle2D.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in MainCore.obj
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol __imp__PostQuitMessage[email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>MainCore.obj : error LNK2001: unresolved external symbol [email protected]
1>C:\general\...\Engine\Debug\test.exe : fatal error LNK1120: 15 unresolved externals
事情是當我把程序轉回到之前我整合物理庫一切工作就像它應該。創建這個庫的人告訴我,它可以在他們試圖使用它的所有系統上正常工作,但他們從來沒有試圖在Windows程序中使用它,並且他們向我保證,這與它無關是一個Windows應用程序。當我問他們是否使用了像第一個鏈接器警告那樣的特殊標誌時,他們說他們沒有使用這樣的標誌(領導程序員甚至不知道它們是什麼,或者如何設置它們)。整合物理之前的構建讓directX能夠正常渲染。
任何幫助將是偉大的。
更新:改變了鏈接器>輸入>附加依賴於
C:\ physics_core \ PhysicsCore \調試\ PhysicsCore.lib 可能需要改變該下釋放是原始
其固定在前6個錯誤,但尚未解決的外部依然存在
更新: 情況解決。
所有的錯誤都通過採取2個行動關於相同的特性線來解決。
1確保在調試模式下正在使用庫的調試版本。
2檢查有問題的庫的依賴關係,如果有任何重疊,則包括它們。因爲編譯器首先檢查正在使用的任何庫的依賴項列表,然後檢查項目的依賴關係。如果有任何重疊,第一個將會被忽略,但是如果包含依賴項標誌沒有被設置爲true,編譯器將不會包含它們。 所以修正行來解決的情況是在連接>輸入>需要更多的依賴項改爲:
C:\physics_core\PhysicsCore\Debug\PhysicsCore.lib // include additional dependencies
再次感謝您的所有幫助。
不要忽略這一點:*警告LNK4098:defaultlib「MSVCRT」與其他使用林達衝突;使用/ NODEFAULTLIB:庫*衝突的運行時庫會導致各種問題,雖然你會*通常*看到庫函數的重新定義 – 2012-02-13 20:23:11
@EdS。但我該如何解決它們,這是件大事情,所有這些調用都在回滾版本中,並且它正在發生什麼。 – gardian06 2012-02-13 20:29:29
Are you試圖鏈接'PhysicsCore.lib'的* Release *版本和程序的* Debug *版本? – Praetorian 2012-02-13 20:37:17