Xcode 4中静态库链接问题

4
升级到Xcode 4以后,我的问题就开始了。我想发布一个关键更新,但是一直无法正常工作。我已经尝试了各种设置,重启和重新安装Xcode,还回滚了我的文件版本,但都没有解决问题。
我的项目连接到三个静态库,这些库包含在其他三个项目中。我使用了标准流程来链接库(将项目文件拖入我的文件夹中,将其产品添加为目标依赖项,并将lib---.a文件添加到Link Binary With Libraries阶段)。实际上,我使用调试构建配置编译也没有问题,可以模拟器或我的测试设备运行。
问题出现在我使用发布构建配置进行编译或尝试归档时。根据我的设置,我收到了许多不同的错误,但大多数都是这些变化: ld:警告:忽略文件 [...]/Build/Products/Debug-iphonesimulator/libGDataTouchStaticLib.a, 文件是为归档构建的,而不是正在链接的体系结构(armv6)
对于armv6架构的未定义符号: “_OBJC_CLASS_$_ GDataSpreadsheetData”, 引用自: ExportViewController.o中的objc-class-ref
我不明白为什么它甚至会查看Debug-iphonesimulator目录中的Products(我发誓,我链接到的所有内容在Finder中都显示为正确的Release-iphoneos目录)。
我已经花费了大量的时间来解决这个问题,真的需要帮助!谢谢!
3个回答

1

谢谢。我找到了另一种解决方案——只需将Release-iphoneos目录中的.a文件复制到Debug-iphonesimulator目录中。换句话说,成功地欺骗了它。然后出现了另一个错误,我将单独处理。 - ed94133
我曾经遇到过同样的问题,但是它是针对“mySettings”库的。这只是一个我在应用程序中包含的简单的应用设置库。我所做的是进入“mySettings”库的目标部分,在“Build Active Architecture Only”中将“Yes”改为“No”,然后它就可以正常构建了。 - mracoker

0

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

然而,接着我遇到了一个多应用程序包的问题here,而给出的解决方案对我无效。最终我放弃了,重新安装了Xcode 3。编译、归档并上传到App Store只用了20分钟。在我再次尝试Xcode 4之前,可能需要一段时间和几个小版本的更新。


0
你可能已经在GDataTouchStaticLib目标的其他C标志中启用了-DGDATA_REQUIRE_SERVICE_INCLUDES=1。如果是这样,请通过添加-DGDATA_INCLUDE_SPREADSHEET_SERVICE=1到Other C Flags来添加所需的服务,例如,在此情况下需要电子表格服务。或者,如果你不想让GData要求服务包含(这将把一切都构建到静态库中,而不仅仅是你需要的),只需删除DGDATA_REQUIRE_SERVICE_INCLUDES标志即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接