如何使用Xcode 4.3.1中的工作区链接到coco2d静态库(1.1 beta 2)

Pte*_*tyl 8 static-libraries cocos2d-iphone static-linking ios xcode4

到目前为止我做了以下事情:

  1. 创建工作区
  2. 添加了我的项目
  3. 添加了Cocos2d iOS项目(通过拖放到项目导航器中).这是我项目的兄弟姐妹(不是孩子).
  4. 在我的项目中,在构建阶段,链接到libcocos2d.a
  5. 在我的项目的构建设置中 - 将"始终搜索路径"设置为"是"
  6. 创建指向包含cocos2d iOS xcodeproj文件的文件夹的源树变量.
  7. 在我的项目的用户标头路径中,从步骤6添加了源树变量.设置为递归.8.在项目导航器中,单击libcocos2d.a库(它显示为红色).设置位置"相对于构建产品"您可以在Xcode 4.3.1中最右侧的窗口中进行设置.
  8. 关闭工作区,并在TextWrangler中打开pbxproj文件.搜索包含libcocos2d.a的路径删除路径,因此该条目只读取"libcocos2d.a".这是因为在编译之后,库仍然在应用程序的相同构建目录中.

Codesense和自动完成工作.但这不会编译.当我尝试构建时会弹出大约70个链接器错误,所有这些都说:

体系结构armv7的未定义符号:"_ OBJC_CLASS _ $ _ CCDirector",引自:AppDelegate中的objc-class-ref.ViewController.o中的objc-class-ref"_kEAGLColorFormatRGB565",引用自: - AppDelegate.o中的[RIAppDelegate applicationDidFinishLaunching:] "_OBJC_CLASS _ $ _ CCTexture2D",引自:AppDelegate.o中的objc-class-ref"_OBJC_CLASS _ $ _ EAGLView",引自:AppDelegate.o中的objc-class-ref

如果我尝试为模拟器构建,那么它代替armv7,它表示i386缺少符号.cocos2d项目本身可以编译和构建.这是我的项目有上述错误.

我尝试构建后,cocos2d库存在于我的应用程序的构建目录中.

编辑:忘了提.我还编辑了我的项目的计划,以便不并行构建.我还添加了cocos2d目标,并使其成为列表的顶部(因此它应该首先构建).

编辑:澄清 - 如上所述,在对pbxproj文件进行更改后,libcocos2d.a文件不再是红色.看起来很正常.此外,我的应用程序也已构建,即使存在链接错误和构建失败.(它实际上并不构建,但产品不是"红色".应用程序文件创建在与生成cocos2d库的位置相同的位置.

Pte*_*tyl 11

我一直试图将Cocos2d用作静态库,而不是模板.原因是它可以更容易地以模块化方式开发我的项目.此外,它可以更容易地在cocos2d版本之间切换,等等.搜索cocos2d-x论坛后,我发现此链接:http://cfc.kizzx2.com/index.php/cocos2d-x-with-xcode-4-from-scratch-without-template/

我找到了我需要添加的框架,并解决了所有链接问题.

我还没有向商店提交申请,所以如果有经验丰富的人可以查看是否有任何陷阱/错误,那就太棒了.英语是我的第二语言,所以请不要介意.这是使用cocos2d1.1beta2和Xcode 4.3.1完成的

  1. 创建Xcode工作区
  2. 导航到包含cocos2d xcodeproj文件(iOS/Mac)的文件夹.这是你下载后解压缩cocos2d的地方.
  3. 将xcodeproj文件拖放到Xcode的导航窗口中.(最左边的窗口).
  4. 单击cocos2d项目文件附近的小三角形,使其所有内容消失.
  5. 右键单击导航器和"新建项目",将新项目添加到工作区.确保将项目作为兄弟添加到cocos2d项目中,而不是作为子项.我选择了单一窗口应用程序(iOS)
  6. 在此新项目中,转到构建设置,并将"始终搜索用户路径"更改为"是"
  7. 将cocos2d文件夹的位置添加到"用户标题搜索路径".如果您愿意,可以将cocos2d文件夹添加到Xcode中的源树列表中,而只需在此处填写变量名称.例如:$ {COCOS2D_SRC}.如果以后想要更改构建环境的文件夹结构,这很方便.

  8. 单击目标并选择构建阶段选项卡.您想要将以下二进制文件与您的库链接.确保他们在那里.libcocos2d.a libz.dylib libxml2.dylib OpenGLES.framework QuartzCore.framework UIKit.framework Foundation.framework CoreGraphics.framework

如果libcocos2d.a是"红色",那么不要担心它.它仍然可以正确编译/链接.

  1. 在构建设置下,将"仅构建活动体系结构"更改为YES.

否则你可能会收到一个错误,忽略文件/Users/Pteriedaktyl/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/libcocos2d.a,文件是为存档而构建的,而不是被链接的架构(armv6)

  1. 在info.plist文件中,确保删除armv7中"所需设备功能"中的条目.否则,您的代码将仅在较新的设备上运行.

现在你定了!您应该能够从兄弟项目访问cocos2d api.如果您想更改cocos2d的版本,只需更改工作区中的cocos2d项目,更新源树路径(如有必要),并链接到新的libCocos2d.a

测试:只是为了尝试一下,我修改了app委托并查看控制器代码以匹配我的一个旧的hello world项目中的代码.

请尝试一下,如果您有任何问题,请添加到主题中.