【问题标题】:Setting up Bullet Physics for iOS in XCode 4在 XCode 4 中为 iOS 设置 Bullet Physics
【发布时间】:2011-07-04 19:14:18
【问题描述】:

所以,我下载了最新的 Bullet Physics 软件包 (2.78) 并阅读了“入门”文档,其中甚至包括一篇关于从头开始在 XCode 中设置项目的文章(但不针对 iOS 或 XCode 4 ,这就是我正在使用的)。即便如此,我仍然无法设置它。

以下是我目前正在采取的步骤:

  1. 我正在添加子弹物理“src” Xcode 类中的文件夹

  2. 我包括子弹物理 调试中的“src”文件夹路径和 发布“标题搜索路径”在 XCode

  3. 我添加了#include “btBulletDynamicsCommon.h”到 我想使用 Bullet 的文件 物理学

  4. 我将 Objective-C 文件更改为 Objective-C++ 通过改变它的文件 从“m”扩展为“mm”。这是 文件所在的 “btBulletDynamicsCommon.h”是 包括

按照这些步骤操作后,编译器会抱怨缺少文件(最初的几个错误,当我尝试构建时显示了 999 多个错误)。

这些是 btSoftBodySolverVertexBuffer_DX11.h 中缺少的前几个标头:

#include <windows.h>
#include <crtdbg.h>
#include <d3d11.h>
#include <d3dx11.h>
#include <d3dcompiler.h>

现在,我对 XCode 和 iOS 还很陌生,所以这些缺失的事实并不能真正告诉我如何解决这个问题,这让我什至想知道它们是否完全需要 iOS 开发给出附加的“DX11”在有这个问题的文件名上。

所以,我希望了解可能出现问题的信息,或者有关如何从头开始在 XCode 4 中设置用于 iOS 的 Bullet Physics 的信息。

谢谢。

更新:我已经完全删除了 DX11 和 OpenCL,现在我可以在上面的第 4 步之后进行编译。我还没有实际测试过 Bullet Physics 框架,看看它是否可以正常工作。但这现在让我问:

在 iOS 中运行 Bullet Physics 所必需的特定源文件/文件夹是什么?

【问题讨论】:

    标签: ios xcode xcode4 bulletphysics


    【解决方案1】:

    有一个教程分步说明将 Bullet Physics 与 iOS 和 Apple 的 GLKit 框架集成http://www.informit.com/articles/article.aspx?p=1914612

    可随教程下载的示例代码将帮助您快速入门并生成有趣的模拟。

    【讨论】:

      【解决方案2】:

      如何将 Bullet Physics 插入 iOS:iOS OpenGL BulletPhysics Sample Code

      下载示例代码或使用 iOS openGL 模板新建项目表单 Xcode:

      1. 下载子弹物理...将其放入如下文件夹:

      *(注意有一个项目文件夹,里面有Xcode项目文件)

      /MyProjectFolder/bullet-2.78/
      /MyProjectFolder/MyProject/MyProject.xcproj
      

      1.5。在物理目录中运行 CMake 以编译框架(假设您已经安装了 cmake CMake)这一步对于我上传的示例代码是可选的,因为它已经包含了已编译的框架......这使得文件 100 megs 但是现在 100 兆是多少?

      cmake . -G "Unix Makefiles" -DINSTALL_LIBS=ON -DBUILD_SHARED_LIBS=ON     -DFRAMEWORK=ON  -DCMAKE_OSX_ARCHITECTURES='i386;x86_64'     -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/Library/Frameworks     -DCMAKE_INSTALL_NAME_DIR=/Library/Frameworks -DBUILD_DEMOS:BOOL=OFF
      make -j4
      sudo make install
      
      1. 转到您的 MyProject.xcproj 并在 Xcode 中打开...

      在 XCode 中转到您希望将物理代码添加到的任何文件...您必须了解 cpp 文件是 c++ 而 .m .h 文件通常是 cocoa。您必须更改要添加物理引擎代码的类,使其具有 .mm 扩展名,表示它应编译为 Objective-C++ 代码...

      1. 在要添加物理的特定类中,现在是 Objective-C++ 文件或 cpp 文件,添加行

        #include "btBulletDynamicsCommon.h"
        

      你应该编译...错误是找不到文件...

      1. 接下来转到 MyProjectFolder/bullet-2.78/src 并将 src 文件夹拖到您的项目中。
      2. 删除名为 BulletMultiThread 的文件夹...它将消除尝试编译某些 openCL (.cl) 文件的错误

      3. 最后一步,将以下框架从子弹物理安装的 src 文件夹复制到您的项目中:

        /MyProjectFolder/bullet-2.78/LinearMath/LinearMath.framework /MyProjectFolder/bullet-2.78/BulletCollision/BulletCollision.framework /MyProjectFolder/bullet-2.78/LinearMath/LinearMath.framework

      4. Build and Run...现在应该可以顺利编译到 iOS 和 Mac...

      【讨论】:

        【解决方案3】:

        我发现 Orbitus007 的回答有点失误。您可以将子弹物理框架添加到项目中,而不是将整个 src 文件夹添加到您的项目中。添加 src 文件夹给了我错误,只是添加框架使我的项目编译

        应该看起来像这样http://imgur.com/CINtb

        然后你就可以走了

        #import "BulletDynamics/btBulletDynamicsCommon.h"
        

        您仍然需要使用 .mm 扩展名的文件

        另外,我发现我在尝试使用 cmake 来说明有关 xcode-select 的内容时出现错误。如果你得到它尝试在终端中运行这个命令,然后再试一次

        sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
        

        但除此之外,他的回答帮助我让它工作

        【讨论】:

          【解决方案4】:

          好的,作为更新并回答我自己的问题:

          我最终删除了文件夹 DX11 和 OpenCL 及其内容。到目前为止,这使我能够运行一些 Hello World 测试。

          我仍然欢迎更自信的答案,因为我觉得我找不到任何适用于 iOS 使用的文档,这似乎很奇怪。

          【讨论】:

          • 你能在模拟器中运行演示吗,我得到了 EXC_BAD_ACCESS。我认为这与这些 BT_USE_SSE_IN_API 和 BT_USE_SSE 定义有关
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-14
          相关资源
          最近更新 更多