3

我正在尝试使用 Visual Studio 2013 编译我的游戏。该游戏使用 Box2D,但在发布模式下编译时,发布 Box2D.lib 出现错误。在调试模式下使用调试 Box2D.lib 编译时它工作正常。

我收到 135 个错误,主要是这三个:

1>Box2D.lib(b2CollideEdge.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>MyContactListener.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) char const * __cdecl std::_Winerror_map(int)"
(__imp_?_Winerror_map@std@@YAPBDH@Z)
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 个错误。

4

1 回答 1

1

您可能在链接器选项中禁用了默认运行时库的链接。右键单击项目并转到属性。在 Linker->Input 下将选项 Ignore All Default Libraries 设置为 No。

于 2014-12-02T20:37:50.843 回答