尝试集成Box2DCocos2DExamples.xcodeproj文件的XCode 4.5中的工作空间/编译/库问题

时间:2013-01-23 02:48:53

标签: objective-c cocos2d-iphone compiler-errors xcode4.5 box2d-iphone

第一次在iOS上发帖和新手,但过去几周一直在努力解决工作空间/编译/库问题,虽然我喜欢学习冒险,但它让我受够了,我只是厌倦了,需要帮助。我正在使用XCode4.5

我正在尝试将Box2DCocos2DExamples.xcodeproj文件与另一个项目文件(test.xcodeproj)集成到我自己的工作区文件中,这样我就可以从我在网上找到的这个示例项目文件中获取一些很酷的切片功能。把它放进我的应用程序。看起来像一个简单的请求,不是吗?我设置了一个工作区项目,以便我可以导入整个Box2DCocos2DExamples.xcodeproj文件,并在需要时从同一工作区内修改代码。

我做了以下事情:

  • 为我的应用内置设置指定了正确的用户标头搜索路径: / Users / xx / Desktop / Code / Box2D- Examples-master, recursive yes 和 始终将搜索用户路径设置为
  • 我从中创建了一个库文件Slice.a Box2DCocos2DExamples.xcodeproj我很困惑/有“编译问题 来源“并添加”复制标题“,因为这似乎是一个愚蠢的行为 Xcode中的手动过程,用于添加这些文件,甚至当我尝试过滤类似的东西时 “.m”并选择一堆,它要么不选择所有文件,所以我递归保留 添加更多文件,直到我实际获得完全不同数量的.h和.m文件。一世 我觉得这对我来说有点愚蠢,因为我正在添加所有内容 这些.m和.h文件(超过100个)来自Box2D和Cocos2D软件包,但我的 似乎需要“链接器错误”和“未知符号i386”错误消息 这些文件......有更好的方法吗?
  • 我玩过各种方案设置,并确保我 在我的应用程序的构建目标中添加了库(slice.a) 方案。为什么我能够将Box2DCocos2DExamples.xcodeproj添加为 我的应用程序和库(slice.a)的额外构建目标? 有没有办法避免将库文件用于此类事情?
  • 我已将库(slice.a)文件中的构建设置设置为Skip Install = yes
好的,所以说我觉得我的主要问题和缺乏理解的所有内容都围绕着我的库的编译源和复制标题,并且还想知道我是否正在从我试图调用类的app文件做一些时髦的事情这是在Box2DCocos2DExamples.xcodeproj文件中。这里只是一个小样本,是唯一一个引用其他项目类的未注释部分。通过将CCDirector.m添加到我的库中,我能够解决这些链接器错误。

// Try to use CADisplayLink director
// if it fails (SDK < 3.1) use the default director
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
    [CCDirector setDirectorType:kCCDirectorTypeDefault];

CCDirector *director = [CCDirector sharedDirector];

我的错误消息根据添加的源文件有所不同但我似乎无法找到我的库(slice.a)文件中的源文件的正确组合来解决所有这些并且它肯定无法获得过了编译的链接阶段。

这是我收到的错误消息示例:

  

_ccRemoveHDSuffixFromFile“,引自:          - libSlice.a中的[CCTextureCache addImageAsync:target:selector:](CCTextureCache.o)          - libSlice.a中的[CCTextureCache addImage:](CCTextureCache.o)          - [CCTextureCache(PVRSupport)addPVRTCImage:libSlice.a中的bpp:hasAlpha:width:](CCTextureCache.o)          - [CCTextureCache(PVRSupport)addPVRImage:]在libSlice.a(CCTextureCache.o)“_ ccpLength”中,引自:          - libSlice.a中的[CCLayerGradient updateColor](CCLayer.o)“_ cocos2dVersion”,引自:          - libSlice.a(CCDirector.o)中的[CCDirector init]“_gluLookAt”,引自:          - libSlice.a中的[CCDirectorIOS setProjection:](CCDirectorIOS.o)          - libSlice.a中的[CCCamera locate](CCCamera.o)          - libSlice.a(CCGrid.o)中的[CCGridBase set3DProjection]“_gluPerspective”,引自:          - libSlice.a中的[CCDirectorIOS setProjection:](CCDirectorIOS.o)          - libSlice.a中的[CCGridBase set3DProjection](CCGrid.o)ld:找不到架构i386 clang的符号:error:linker命令   退出代码1失败(使用-v查看调用)

有一段时间我正在将.m文件逐个添加到我的库文件构建阶段,这样我就解决了我看到的错误,但是这个问题花了太长时间并没有让我走上正轨,我仍然觉得我错过了一些显而易见的事情,或者更加(一般)简单的方式来做我正在做的事情。

我知道我已经说了很多而且我道歉但我主要是在寻找有关编译,链接图书馆等方面的一些见解,这有助于我解决我遇到的问题。关于XCode的机制的任何意见都是受欢迎的,因为我真的希望在这里获得深刻的理解。

提前干杯谢谢!

1 个答案:

答案 0 :(得分:0)

我并不是这个变通方法的忠实粉丝,但是现在我决定继续前进,所以我想我会发布它。它在概念上有点简单但不一定可扩展,所以最终我必须提出更好的东西。救命啊!

我试图将我的应用程序作为库添加到包含Box2dCocos2D.xcodeproj文件的新工作区,而不是尝试将Box2D / Cocos2D或我的情况(Box2dCocos2DExamples.xcodeproj)作为库添加到我的应用程序中。然后我意识到将我的应用程序的源文件添加到这个新工作区更简单,因为没有太多,并从那里开始重新安排工作区的appDelegate文件。这很好但只是因为我放弃了添加/创建库文件:(