Xcode 8:存档构建因链接错误而失败(对于嵌套框架)。常规构建成功编译

巴斯卡

编辑似乎问题已深入到它以调试模式而不是发布模式构建的事实。仍在尝试理解为什么它内置于一个而不是另一个中

原始问题

我有一个具有以下结构的Xcode工作区。

工作空间:

  1. UIProject
  2. 框架A
  3. 框架B

FrameworkB嵌套在FrameworkA中,因此FrameworkA依赖于FrameworkB。两者都是我创建的自定义框架。

它可以构建和编译良好。当我尝试对其进行存档时,出现以下错误:

Undefined symbols for architecture armv7:
  "ADI4ONS.Connection4ONS.connectionStat.getter : Swift.Bool", referenced from:
      type metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionStat.setter : Swift.Bool", referenced from:
      type metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionStat.materializeForSet : Swift.Bool", referenced from:
      type metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionString.getter : Swift.String", referenced from:
      type metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionString.setter : Swift.String", referenced from:
      type metadata for AircraftServices.connection in Connection.o
  "ADI4ONS.Connection4ONS.connectionString.materializeForSet : Swift.String", referenced from:
      type metadata for AircraftServices.connection in Connection.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

ADI4ONS是frameworkB,而AircraftServices是FrameworkA。欢迎任何帮助。

项目/目标配置

  1. 启用位码
  2. 仅将构建活动体系结构设置为否(也尝试“是”)
  3. Xcode 8和Swift 3.0

实验尝试过尝试过的一些方法

  1. 尝试将存档设置为调试(而不是编辑模式中的默认发布):否

  2. 为UIProject创建了一个独立的工作区,并将框架二进制文件导入了该工作区。存档成功:作品很棒(但不是我想要的)

巴斯卡

好吧,经过大量的研究和实验,这是我的结果。

因此,我找出了导致发布模式构建中出现问题的参数。它是“快速编译器-代码生成:优化级别”。它具有三个值

  1. 无[-Onone]
    • 调试的默认值
    • 也适用于我的发布。
  2. 快速的单文件优化[-O]-版本中的作品
    • 我很可能要设置的值
  3. 快速,整体模块优化[-O-整体模块优化]
    • 发行默认值
    • 这导致休息

我试图对WMO进行更多研究,但并没有对其进行深入研究。好像它是在Xcode 7中引入的。

而且我的框架都在Swift中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章