【问题标题】:Problems linking static libraries in Xcode 4在 Xcode 4 中链接静态库的问题
【发布时间】:2011-07-15 07:10:54
【问题描述】:

在我几天前升级到 Xcode 4 之前,一切都很好。从那以后,我在让事情按应有的方式工作时遇到了无穷无尽的问题。我有一个重要的更新需要发布。我已经尝试了所有我能想到的设置排列,重新启动,重新安装 Xcode,恢复到我的文件的旧版本,一切。

我的项目链接到三个静态库,包含在其他三个项目中。我使用标准流程链接库(将项目文件拖入我的,将其产品添加为目标依赖项,将 lib---.a 文件添加到 Link Binary With Libraries 阶段)。实际上,无论是针对模拟器还是我的测试设备,我都可以使用 Debug Build Configuration 进行编译。

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

ld:警告:忽略文件 [...]/Build/Products/Debug-iphonesimulator/libGDataTouchStaticLib.a, 文件是为存档而构建的 不是被链接的架构 (armv6) 的未定义符号 架构 armv6:
"_OBJC_CLASS_$_GDataSpreadsheetData", 参考自: ExportViewController.o 中的 objc-class-ref

我不明白为什么它甚至在 Debug-iphonesimulator 目录中查看 Products(我发誓,我链接到的所有内容都在 Finder 中显示在正确的 Release-iphoneos 目录中)。

我花了很多时间来解决这个问题,真的需要帮助!谢谢!

【问题讨论】:

    标签: ios4 build-process xcode4 static-libraries


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我找到了一个不同的解决方案——只是将 .a 从 Release-iphoneos 目录复制到 Debug-iphonesimulator 目录。换句话说,成功地欺骗了它。然后出现了另一个错误,我将单独解决。
    • 我遇到了同样的问题,但它与“mySettings”库有关,这只是我在应用程序中包含的一个简单的应用程序设置库,我所做的是转到目标部分的库对于 mySettings 并将“仅构建活动架构”从是更改为否,然后它就可以正常构建了。
    【解决方案2】:

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

    然而,我遇到了here 提出的多应用程序包问题——给出的解决方案对我不起作用。最后放弃重装Xcode 3。20分钟编译、归档、上传到App Store。在我再次尝试 Xcode 4 之前,还需要一些时间和几个 dot-release。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-01-28
        • 1970-01-01
        • 2011-09-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-25
        • 2021-11-06
        • 1970-01-01
        • 2018-06-26
        相关资源
        最近更新 更多