Bullet Physics,Visual Studio中的链接错误

时间:2012-11-18 21:32:07

标签: c++ visual-studio linker visual-studio-2012

我在Windows 7和Visual Studio 2012上使用Bullet Physics。我已经编译了库,并且演示工作正常,但是当我尝试创建自己的解决方案时,我会收到链接错误。我已经将代码量最小化了

#include "btBulletDynamicsCommon.h"
int main(int argc, char*argv[])
{
    btBoxShape* box = new btBoxShape(btVector3(1, 1, 1));
    return 0;
}

当我链接时,使用Visual Studio给出了以下错误:

1>------ Build started: Project: HelloBulletApp, Configuration: Release Win32 ------  
1>  main.cpp  
1>  main.obj : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG;   add /LTCG to the link command line to improve linker performance
1>BulletCollision.lib(btCollisionShape.obj) : error LNK2038: mismatch detected for   'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj
1>BulletCollision.lib(btConvexShape.obj) : error LNK2038: mismatch detected for   'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj
1>BulletCollision.lib(btPolyhedralConvexShape.obj) : error LNK2038: mismatch detected for   'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj
1>BulletCollision.lib(btConvexPolyhedron.obj) : error LNK2038: mismatch detected for   'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj
1>LinearMath.lib(btConvexHullComputer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj
1>LinearMath.lib(btGeometryUtil.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>c:\path\to\HelloBulletApp\HelloBulletApp\Release\HelloBulletApp.exe : fatal error LNK1319: 6 mismatches detected

在构建调试或发布模式时出现相同的错误。 我试过了:
- 重建子弹2.81,
- 重新下载2.81,
- 创建一个空白项目并添加库,
- 创建一个空白项目并按照http://bulletphysics.org/mediawiki-1.5.8/index.php/Creating_a_project_from_scratch的建议添加项目, 但无济于事。

我能做些什么吗?

1 个答案:

答案 0 :(得分:20)

看起来BulletCollision.lib被编译为与C运行时库(/ MD)的DLL版本链接,但是您正在编译以链接静态链接的运行时库(/ MT)。更改编译器选项以链接DLL运行时库。