2014-12-02 55 views
3

我試圖用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個錯誤。

+1

您正在使用的Box2D庫可能已用較舊版本的Visual Studio編譯。 – 2014-12-02 15:10:19

+1

@Captain Obvlious:我敢肯定Box2D庫是用VS的相同版本編譯的,我正在編譯這個遊戲。實際上我最後一次在20分鐘前編譯了這個庫。 – lefti 2014-12-02 15:14:50

+0

這些都是C運行時庫符號,特定於Microsoft版本。你如何設法避免鏈接是不可能的。顯示您使用的鏈接器選項。 – 2014-12-02 17:42:08

回答

0

您可能禁用鏈接器選項中的默認運行時庫的鏈接。右鍵單擊該項目並轉到屬性。在鏈接器 - >輸入下將忽略所有默認庫的選項設置爲否。

+0

我將「忽略所有默認庫」設置爲「否」。 – lefti 2014-12-02 20:40:24