我正在构建一个具有弹物理支持的Windows OpenGL应用程序。我的开发环境设置是:
我的应用程序有两个配置,即Win32和x64。下面是构建Windows应用程序的步骤:
现在,当我为这两种配置(即为Win32和x64构建批生成)构建我的解决方案时,除了:
x64 Release -错误如下:
BulletCollision_vs2010_x64_debug.lib(btDefaultCollisionConfiguration.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in stdafx.objWin32 Release -错误如下:
Win32_Window.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btConvexInternalShape ...Win32 Debug --错误如下:
Win32_Window.obj : error LNK2019: unresolved external symbol "public: __thiscall btRigidBody最终消息-构建: 13成功,3失败
我遵循这个帮助来构建我的Visual项目:
project
注:--如果我使用CMAKE为BulletPhysics构建VisualStudio解决方案,然后将这些解决方案分别链接到每个BulletPhysics体系结构的windows应用程序中,那么它将正确构建(即分别为Win32和x64构建)。
我是否可以只使用一个Visual解决方案来实现这个功能?
发布于 2014-08-24 07:17:49
在(BulletCollision_vs2010_x64_debug.lib)中,您试图将在调试模式下编译的静态库与发布模式(特别是stdafx.obj)编译的应用程序中的对象文件链接起来。您的目标文件的编译器选项(_ITERATOR_DEBUG_LEVEL)与库的编译器选项不匹配( 0和2分别用于发布和调试)。这就是链接失败的原因。在Win32 Debug和Win32 Release的情况下,看起来根本就没有链接库。
我认为项目推荐人走错了路。
BulletDynamics、BulletCollision和LinearMath添加到应用程序项目的“项目依赖项”中。这将保证子弹将建立在你的应用程序之前。选中“builds”选项卡,以确保生成按正确的顺序进行。Build->Configuration manager>中,对所有“解决方案配置”和所有“解决方案平台”(上面的下拉列表)检查项目配置和平台是否正确。(也就是说,当您将解决方案切换到发布时,没有使用调试的项目,反之亦然)https://stackoverflow.com/questions/25309457
复制相似问题