首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Visual中为多个体系结构构建示例物理

在Visual中为多个体系结构构建示例物理
EN

Stack Overflow用户
提问于 2014-08-13 11:22:14
回答 1查看 1.8K关注 0票数 0

我正在构建一个具有弹物理支持的Windows OpenGL应用程序。我的开发环境设置是:

  • 操作系统: Windows 7 SP1 64位
  • 2010 SP1
  • BulletPhysics -子弹-2.82-r 2704

我的应用程序有两个配置,即Win32x64。下面是构建Windows应用程序的步骤:

  1. 首先,我在"bullet-2.82-r2704\build".中执行vs2010.bat文件
  2. 我将从步骤1创建的vs2010文件夹中的项目文件添加到我的visual解决方案中。
  3. BulletDynamicsBulletCollisionLinearMath添加项目依赖项
  4. 添加所有符号库的引用。

现在,当我为这两种配置(即为Win32x64构建批生成)构建我的解决方案时,除了:

x64 Release -错误如下:

代码语言:javascript
复制
    BulletCollision_vs2010_x64_debug.lib(btDefaultCollisionConfiguration.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in stdafx.obj

Win32 Release -错误如下:

代码语言:javascript
复制
    Win32_Window.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btConvexInternalShape ...

Win32 Debug --错误如下:

代码语言:javascript
复制
    Win32_Window.obj : error LNK2019: unresolved external symbol "public: __thiscall btRigidBody

最终消息-构建: 13成功,3失败

我遵循这个帮助来构建我的Visual项目:

project

注:--如果我使用CMAKE为BulletPhysics构建VisualStudio解决方案,然后将这些解决方案分别链接到每个BulletPhysics体系结构的windows应用程序中,那么它将正确构建(即分别为Win32x64构建)。

我是否可以只使用一个Visual解决方案来实现这个功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-24 07:17:49

在(BulletCollision_vs2010_x64_debug.lib)中,您试图将在调试模式下编译的静态库与发布模式(特别是stdafx.obj)编译的应用程序中的对象文件链接起来。您的目标文件的编译器选项(_ITERATOR_DEBUG_LEVEL)与库的编译器选项不匹配( 02分别用于发布和调试)。这就是链接失败的原因。在Win32 DebugWin32 Release的情况下,看起来根本就没有链接库。

我认为项目推荐人走错了路。

  1. 在我看来,虽然“项目引用”对模块的C#风格有好处,但在本机开发中,它更像是不必要的复杂的事情。只需显式地向链接器输入添加普通的旧库,如下所示: ....\lib\BulletDynamics_vs2010_x64_debug.lib ....\lib\BulletCollision_vs2010_x64_debug.lib ....\lib\LinearMath_vs2010_x64_debug.lib 相应地更改每个配置的"debug“和"x64”部件。我认为它更可靠。
  2. BulletDynamicsBulletCollisionLinearMath添加到应用程序项目的“项目依赖项”中。这将保证子弹将建立在你的应用程序之前。选中“builds”选项卡,以确保生成按正确的顺序进行。
  3. 重复检查每个模块的编译器选项是否相同。
  4. 在<Build->Configuration manager>中,对所有“解决方案配置”和所有“解决方案平台”(上面的下拉列表)检查项目配置和平台是否正确。(也就是说,当您将解决方案切换到发布时,没有使用调试的项目,反之亦然)
  5. 还是失败了?看一看示例子弹应用程序,比如"App_HelloWorld“。将其选项与应用程序的选项进行比较,您肯定会发现错误的来源。
  6. 也许,你可以换一种方法:把你的应用程序项目添加到项目的解决方案中(删除不必要的东西),看看它是否有效。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25309457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档