1

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

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

我做了以下事情:

  • 为我的应用程序构建设置指定了正确的用户标题搜索路径:/Users/xx/Desktop/Code/Box2D-Examples-master,递归是并且始终搜索用户路径设置为
  • 我已经从 Box2DCocos2DExamples.xcodeproj 创建了一个库文件 Slice.a 并且对“编译源”和添加“复制标题”感到困惑/有问题,因为这似乎是 Xcode 中添加这些文件的愚蠢手动过程,甚至当我尝试过滤诸如“.m”之类的东西并选择一堆它要么不选择所有文件,所以我递归地继续添加更多文件,直到我真正得到数量截然不同的 .h 和 .m 文件。我确实觉得这对我来说有点愚蠢,因为我从 Box2D 和 Cocos2D 包中添加了所有这些 .m 和 .h 文件(超过 100 个),但我的“链接器错误”和“未知符号 i386”错误消息似乎需要这些文件...有更好的方法吗?
  • 我尝试了各种方案设置,并确保在我的应用程序方案的构建目标中添加了库 (slice.a)。为什么我可以将 Box2DCocos2DExamples.xcodeproj 添加为我的应用程序的附加构建目标以及库 (slice.a)?有没有办法避免将库文件用于这种事情?
  • 我已将库 (slice.a) 文件中的构建设置设置为 Skip Install = yes

好的,所以说了这么多,我觉得我的主要问题和缺乏理解是围绕我的库的编译源和复制头文件,并且还想知道我是否正在从我的应用程序文件中做一些时髦的事情,试图调用一个类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”,引用自: -[CCTextureCache addImageAsync:target:selector:] in libSlice.a(CCTextureCache.o) -[CCTextureCache addImage:] in libSlice.a(CCTextureCache.o) -[CCTextureCache(PVRSupport) addPVRTCImage:bpp: hasAlpha:width:] in libSlice.a(CCTextureCache.o) -[CCTextureCache(PVRSupport) addPVRImage:] in libSlice.a(CCTextureCache.o) "_ccpLength",引用自:-[CCLayerGradient updateColor] in libSlice.a(CCLayer .o) "_cocos2dVersion",引用自:-[CCDirector init] in libSlice.a(CCDirector.o) "_gluLookAt",引用自:-[CCDirectorIOS setProjection:] in libSlice.a(CCDirectorIOS.o) -[CCCamera locate ] 在 libSlice.a(CCCamera.o) - [CCGridBase set3DProjection] 在 libSlice.a(CCGrid.o) "_gluPerspective",引用自:-[CCDirectorIOS setProjection:] in libSlice.a(CCDirectorIOS.o) -[CCGridBase set3DProjection] in libSlice.a(CCGrid.o) ld:未找到架构 i386 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

有一段时间,我煞费苦心地将 .m 文件一个一个地添加到我的库文件构建阶段,以便解决我看到的错误,但这花费了太长时间,并没有让我走上正确的轨道,我仍然觉得我在遗漏了一些明显的或更(一般)简单的方法来做我正在做的事情。

我知道我已经说了很多,我很抱歉,但我主要是在寻找一些关于编译、链接库等的见解,希望能帮助我解决我遇到的问题。欢迎任何关于 XCode 机制的输入,因为我真的希望在这里获得深刻的理解。

提前干杯和感谢!

4

1 回答 1

0

我不是这种解决方法的真正粉丝,但这是我目前决定继续前进的地方,所以我想我会发布它。它在概念上有点简单,但不一定可扩展,所以最终我必须想出更好的东西。帮助!

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

于 2013-01-26T02:55:36.290 回答