基本上我试图让 SFML 和 Box2D 在 VS2012 下一起工作。我让他们两个独立工作,但是我不能让他们一起工作。
如果我尝试将它们一起运行,我会得到一堆:
error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug' in Main.obj
如果我将属性中的 RuntimeLibrary 值从 MDd 更改为 MTd,则会出现一堆错误,例如:
error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR110D.dll)
error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR110D.dll)
error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR110D.dll)
一堆,还有两个警告:
warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library`
warning LNK4098: defaultlib 'libcmtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
如果我这样做也不起作用,我会收到一堆类似的错误:
error LNK2001: unresolved external symbol __purecall
对于 SFML,我绝对肯定我做对了。另一方面,对于 Box2D,我不太确定。我使用了本指南,您可以看到它适用于 VS2010。但是,我在构建时没有出错,HelloWorld.cpp 示例运行时没有任何问题。
那么我能做些什么来完成这项工作吗?
编辑:我已经让它工作了,但是仅适用于调试版本我所做的是我尝试将 Box2D 库重建为 /MTd 用于调试和 /MT 用于发布 调试一个构建良好,而发布版本没有。
调试版本工作正常,但发布版本抛出
warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
和错误几乎与这篇文章中的第二个错误列表相同
有什么解决办法吗?
EDIT_2:似乎问题出在 dll 文件中。我重建了 SFML,现在它似乎正在工作。稍后我将进行更多测试以确定我是否已修复它。