我試圖用Visual Studio 2013編譯我的遊戲。遊戲使用Box2D,但是當在發佈模式下編譯時發佈Box2D.lib發生錯誤。在調試模式下使用調試Box2D.lib編譯時,它工作正常。編譯VS2013:錯誤LNK2001使用C++
我得到135個錯誤,主要是這樣三個:
1>Box2D.lib(b2CollideEdge.obj) : error LNK2001: unresolved external symbol @[email protected]
1>MyContactListener.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) char const * __cdecl std::_Winerror_map(int)"
([email protected]@@[email protected])
1>Box2D.lib(b2ContactManager.obj) : error LNK2001: unresolved external symbol _atexit
我已經建立了Box2D.lib的幾次了,我敢肯定,我鏈接到正確的釋放和調試庫。
我試過禁用編譯器標誌/ GS(緩衝區安全檢查),但沒有幫助。
對於構建Box2D.lib和編譯遊戲時,我使用運行時庫的標誌多線程DLL(/ MD)。
編輯:當我與庫「bufferoverflowU.lib」鏈接時,我擺脫了錯誤「@__ security_check_cookie @ 4」。仍然存在133個錯誤。
您正在使用的Box2D庫可能已用較舊版本的Visual Studio編譯。 – 2014-12-02 15:10:19
@Captain Obvlious:我敢肯定Box2D庫是用VS的相同版本編譯的,我正在編譯這個遊戲。實際上我最後一次在20分鐘前編譯了這個庫。 – lefti 2014-12-02 15:14:50
這些都是C運行時庫符號,特定於Microsoft版本。你如何設法避免鏈接是不可能的。顯示您使用的鏈接器選項。 – 2014-12-02 17:42:08