在Xcode 4中连接静态库时遇到的问题

问题描述:

前几天我升级到Xcode 4之前,世界上都是正确的。从那时起,我有无尽的问题让事情按照他们应该的方式工作。我有一个关键的更新,我需要发布。我试过了我能想到的所有设置,重新启动,重新安装Xcode,恢复到我的文件的旧版本,一切。在Xcode 4中连接静态库时遇到的问题

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

当我使用发布构建配置进行编译时,或者当我尝试存档时,所有东西都会横向偏移。我已经得到了很多不同的错误,这取决于我的设置,但大多数是在这个变化:

LD:警告:忽略文件 [...] /编译/产品/调试-iphonesimulator/libGDataTouchStaticLib.a, 文件是专为存档是 没有被链接的 架构的ARMv6 (ARMv6的)不确定的符号体系结构:
“_OBJC_CLASS _ $ _ GDataSpreadsheetData”, 从引用: objc级,裁判在ExportViewController.o

我不明白为什么它甚至在Debug-iphonesimulator目录中查找产品(我发誓,我链接的所有东西都显示在Finder中,位于正确的Release-iphoneos目录中)。

我已经把这个小时数搞定了,真的需要帮助!谢谢!

请检查这个问题和答案。我遇到同样的问题,并修复它。

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

+0

谢谢。我找到了一个不同的解决方案 - 只将.a从Release-iphoneos目录复制到Debug-iphonesimulator目录。换句话说,它成功了。然后出现了另一个我将分开讨论的错误。 – ed94133 2011-03-15 07:57:10

+0

我有同样的问题,但它是针对“mySettings”库,这只是一个简单的应用程序设置库,包括我的应用程序,我所做的是去目标部分mySettings的库,并更改“构建Active Architecture Only“从”是“更改为”否“,之后构建完成。 – mracoker 2011-03-25 11:24:24

我从剥离的iPhoneOS目录中。一个LIB文件复制到调试iphonesimulator目录解决了这个问题,以便正确的文件会被发现,即使在Xcode中寻找错误的目录中。

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

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