【问题标题】:Project can't find framework when creating release build创建发布版本时项目找不到框架
【发布时间】:2013-03-18 20:21:19
【问题描述】:

我在我的项目中添加了一个新框架。 我将框架的 .xcodeproj 文件作为我项目的子项进行了拖动。 我将该项目的产品添加到主项目的目标依赖项中,将二进制文件与库和复制文件(框架)进行链接。 构建测试版本或执行我的项目没有任何问题。

但是,如果我尝试创建存档版本或尝试分析项目,则会失败并出现以下错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_Something", referenced from:
      objc-class-ref in DasProject-F7DB55F503641F0A.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

tl;dr:我可以毫无问题地创建和执行调试版本,存档版本找不到特定的框架。

【问题讨论】:

    标签: xcode macos cocoa frameworks linker


    【解决方案1】:

    尝试将您的“库搜索路径”(“构建设置”->“搜索路径”)设置为“$(TARGET_BUILD_DIR)”或“$(BUILT_PRODUCTS_DIR)”(在我的项目中它们是相同的)
    还要检查目标构建方案中的相应复选框,如 Tools Workflow Guide for iOS 中所述(忽略它是 iOS 文档,只看图像)

    【讨论】:

    • 我链接到其他框架没有任何问题。为什么我需要因为这个特定的框架而改变我的主要项目?
    • 不起作用。清理项目,尝试分析并失败并出现相同的错误。
    • 好的,现在检查框架项目中的“架构”构建设置。 Debug 和 Release 配置必须相同。还要检查“仅构建活动架构”设置。它必须与您的主项目中的相同。
    • 一切都匹配,但在删除并重新添加框架后,发布和调试构建现在都失败了。作为记录,我之前能够使用框架中的代码。我怀疑 Xcode 中存在错误。
    • 可能是某些名称与其他框架(例如系统的)冲突并且链接到错误的库?
    【解决方案2】:

    我从头开始创建了一个新的 Cocoa 框架,并复制了我需要的 .h 和 .m 文件。这解决了问题。

    在比较了这个框架和我正在使用的其他框架之间的构建选项之后,没有发现任何不合适的地方,我真的怀疑这是 Xcode 中的一个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 2021-11-16
      • 2011-03-14
      • 1970-01-01
      • 2020-08-24
      相关资源
      最近更新 更多