在Xcode 4中链接静态库的问题

时间:2011-03-14 20:03:03

标签: ios4 build-process xcode4 static-libraries

在我几天前升级到Xcode 4之前,所有这一切都在世界上。从那时起,我就有了无穷无尽的问题。我需要发布一个重要的更新。我已经尝试了我能想到的每一种设置,重新启动,重新安装Xcode,恢复到我的文件的旧版本,一切。

我的项目链接到三个静态库,包含在其他三个项目中。我已经使用标准流程来链接库(将项目文件拖到我的库中,将他们的产品添加为目标依赖项,将lib ---。一个文件添加到Link Binary With Libraries阶段)。实际上,对于模拟器或我的测试设备,使用Debug Build Configuration进行编译没有问题。

当我使用Release Build Configuration进行编译时,或者当我尝试存档时,一切都是横向的。根据我的设置,我遇到了很多不同的错误,但大多数都有不同的错误:

  

ld:警告:忽略文件   [...] /编译/产品/调试-iphonesimulator / libGDataTouchStaticLib.a,   文件是为存档而构建的   而不是被链接的架构   (armv6)未定义的符号   建筑armv6:
  “_OBJC_CLASS _ $ _ GDataSpreadsheetData”   引自:         ExportViewController.o中的objc-class-ref

我无法理解为什么它甚至在Debug-iphonesimulator目录中查看产品(我发誓,我链接到的所有内容都在Finder中显示在适当的Release-iphoneos目录中)。

我已经花了一些荒谬的时间来解决这个问题,真的需要帮助!谢谢!

3 个答案:

答案 0 :(得分:1)

请检查此问题和答案。我遇到了同样的问题并修复了它。

Xcode4 Linking Problem. File was built for archive which is not the architecture being linked (arm6)

答案 1 :(得分:0)

我通过将.a lib文件从Release-iphoneos目录复制到Debug-iphonesimulator目录来解决了这个问题,这样即使Xcode查找错误的目录也能找到正确的文件。

但是,然后我遇到了多应用程序包的here问题 - 并且给出的解决方案对我不起作用。最后放弃并重新安装Xcode 3.编译,存档,并在20分钟内上传到App Store。在我给Xcode 4另一个镜头之前,还需要一些时间和几个点发布。

答案 2 :(得分:0)

您可能在GDataTouchStaticLib目标的其他C标志中启用了-DGDATA_REQUIRE_SERVICE_INCLUDES = 1。如果是这样,请在您的其他C标志中添加-DGDATA_INCLUDE_SPREADSHEET_SERVICE = 1,以添加所需的服务(在本例中为电子表格)。或者,如果您不希望GData需要服务包含(将所有内容构建到静态库中,而不仅仅是您需要的内容),只需删除DGDATA_REQUIRE_SERVICE_INCLUDES标志。

相关问题