在XCode 4中为iOS设置子弹物理

在XCode 4中为iOS设置子弹物理,ios,xcode,xcode4,bulletphysics,Ios,Xcode,Xcode4,Bulletphysics,因此,我下载了最新的Bullet Physics软件包(2.78),并阅读了“入门”文档,其中甚至包括一篇关于从头开始在XCode中设置项目的文章(但不是针对iOS或XCode 4,我正在使用的)。即使如此,我仍然无法设置此设置 以下是我目前正在采取的步骤: 我加上子弹物理“src” Xcode类中的文件夹 包括子弹物理 调试和调试中的“src”文件夹路径 在中释放“标题搜索路径” XCode 我加上#包括 “btBulletDynamicCommon.h”到 我要使用Bullet的文件 物理学

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

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

  • 我加上子弹物理“src” Xcode类中的文件夹

  • 包括子弹物理 调试和调试中的“src”文件夹路径 在中释放“标题搜索路径” XCode

  • 我加上#包括 “btBulletDynamicCommon.h”到 我要使用Bullet的文件 物理学

  • 我将Objective-C文件更改为 通过更改Objective-C++的文件 从“m”扩展到“mm”。这是 文件中的 “btBulletDynamicCommon.h”是 包括

  • 遵循这些步骤后,编译器会抱怨缺少文件(前几个错误,在我尝试构建时显示999+个错误)

    以下是BTSoftBodySolverTextBuffer_DX11.h中缺少的头几个标头:

    #include <windows.h>
    #include <crtdbg.h>
    #include <d3d11.h>
    #include <d3dx11.h>
    #include <d3dcompiler.h>
    
    #包括
    #包括
    #包括
    #包括
    #包括
    
    现在,我对XCode和iOS还比较陌生,所以缺少这两个代码并不能真正告诉我如何解决这个问题,这让我甚至想知道,如果出现这个问题的文件名上附加了“DX11”,iOS开发是否需要它们

    因此,我想了解的是关于可能错误的信息,或者关于如何从零开始将子弹物理设置为与XCode 4中的iOS一起使用的信息

    谢谢

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


    在iOS中运行Bullet Physics需要哪些特定的源文件/文件夹?

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

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


    我仍然欢迎更自信的回答,因为我觉得奇怪的是,我找不到任何关于iOS使用的文档。

    如何在iOS中插入子弹物理:

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

  • 下载子弹物理。。。将其放入如下文件夹:
  • *(请注意,有一个包含Xcode项目文件的项目文件夹)

    1.5。在physics目录下运行CMake编译框架(假设您已经安装了CMake),这一步对于我上传的示例代码是可选的,因为它已经包含了编译后的框架…这使得文件的容量达到了100兆,但现在到底是什么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
    
  • 转到MyProject.xcproj并在Xcode中打开
  • 在XCode中转到任何要添加物理代码的文件。。。必须理解CPP文件是C++和.m.文件通常是COCOA。您必须更改要添加物理引擎代码的类,使其具有.mm扩展名,表示它应编译为Objective-C++代码

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

    #include "btBulletDynamicsCommon.h"
    
  • 你应该编译…错误是找不到文件

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

  • 最后一步,将以下框架从bullet physics安装的src文件夹复制到项目中:

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

  • 构建并运行。。。现在应该可以顺利编译到iOS和Mac了


  • 我发现Orbitus007的答案有点漏掉了。您可以将bullet Physical框架添加到项目中,而不是将整个src文件夹添加到项目中。添加src文件夹会给我带来错误,仅仅添加框架就可以编译我的项目

    应该是这样的

    然后你就可以走了

    #import "BulletDynamics/btBulletDynamicsCommon.h"
    
    您仍然需要使用扩展名为.mm的文件

    另外,我发现我在尝试使用cmake说明有关xcode select的内容时出错。如果您得到它,请尝试在终端中运行此命令,然后重试

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

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

    有一个教程,里面有将子弹物理与iOS和苹果的GLKit框架相结合的分步指导


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

    您可以在模拟器中运行演示吗,我正在获取EXC\u BAD\u访问权限。我认为这与API中的BT_USE_SSE_和BT_USE_SSE定义有关
    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer