objective-c - XCode 4.5中的工作区/编译/库问题,试图集成Box2DCocos2DExamples.xcodeproj文件

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

首次发布和iOS的新手,但过去两周一直在工作区/编译/库问题方面苦苦挣扎,虽然我喜欢学习冒险,但是这让我很烦,需要帮助。我正在使用XCode4.5

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

我已经完成以下工作:

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

  • 好的,这么说了,我感觉到我的主要问题和缺乏理解就围绕着我的库的编译源和复制头,并且还想知道我是否正在从我的应用程序文件中进行一些时髦的尝试,从而尝试调用该类中的类。 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", referenced from: -[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", referenced from: -[CCLayerGradient updateColor] in libSlice.a(CCLayer.o) "_cocos2dVersion", referenced from: -[CCDirector init] in libSlice.a(CCDirector.o) "_gluLookAt", referenced from: -[CCDirectorIOS setProjection:] in libSlice.a(CCDirectorIOS.o) -[CCCamera locate] in libSlice.a(CCCamera.o) -[CCGridBase set3DProjection] in libSlice.a(CCGrid.o) "_gluPerspective", referenced from: -[CCDirectorIOS setProjection:] in libSlice.a(CCDirectorIOS.o) -[CCGridBase set3DProjection] in libSlice.a(CCGrid.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)



    一段时间以来,我一直在努力地将.m文件一个接一个地添加到我的库文件构建阶段中,以便我解决所看到的错误,但这花费的时间太长了,并且没有使我走上正轨,我仍然觉得自己缺少明显的东西,或者甚至更简单的方法来做我在做的事情。

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

    预先加油,谢谢!

    最佳答案

    我并不是这种解决方法的真正拥护者,但是现在我决定从那里开始,因此我认为应该将其发布。它在概念上有点简单,但不一定可扩展,因此最终我将不得不提出更好的建议。救命!

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

    关于objective-c - XCode 4.5中的工作区/编译/库问题,试图集成Box2DCocos2DExamples.xcodeproj文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471636/

    相关文章:

    objective-c - 触摸文本区域时 UISearchDisplayController 不显示键盘

    objective-c - cocoa 中的单例,他们是邪恶的吗?

    iPhone didFinishLaunchingWithOptions 方法

    uiview - Cocos2d 2.0 添加 UIView 到 CClayer openglview 已弃用

    ios - 如何更改 CCTexture2D 颜色

    swift - 为什么 Swift 中的倒排范围会在运行时而不是编译时崩溃

    objective-c - 使用类将 NSString 传递到另一个 ViewController

    c++ - Cocos2d-x v4.0在使用Xcode 12,Xcode 12.1,Xcode 12.2的iPhone模拟器中崩溃

    java - 由于 hackerrank 程序中的 java 代码超时错误而终止

    c# - 将字符串与 IEnumerable<string> 连接时会发生什么