在Cocoa Touch Framework中包装静态库

我有一个带有2个架构片的胖静态库(armv7,arm64)。 我正在尝试使用swift并将其包装到Cocoa Touch Framework中。

我做的事:

  1. 创建Cocoa Touch Framework项目
  2. 使用标题拖动.a静态库
  3. OTHER_LDFLAGS设置为-all_load
  4. ONLY_ACTIVE_ARCH设置为NO
  5. VALID_ARCHSARCHS设置为armv7arm64
  6. 使用Release构建配置构建
  7. 从DerivedData /../../产品/获取.framework文件

当我把这个.framework放到我的swift项目中时,在我的目标常规设置中添加嵌入式二进制文件部分,导入框架并使用其中一个类,我得到undefined symbols for architecture arm64 undefined symbols for architecture armv7undefined symbols for architecture arm64 undefined symbols for architecture armv7

编辑:
不确定它是否有帮助,但我注意到静态库的大小约为34MB,但生成的.framework的大小约为12MB。

编辑2:
我在静态库和生成的动态库上运行了nm -arch arm64 -g myLibraryName 。 动态库不包含静态库具有的所有符号。 看起来像XCode构建过程剥离了很多。

我想你也忘了添加:

项目 – > 目标 – > 构建阶段 – > 链接二进制文件库 :添加+: libz.dyliblibz.tbd (从Xcode 7开始, *.dylib文件now *.tbd文件)

一定要清理文件夹: /User/yourname/Library/Developer/XCode/DerivedData

PS:如果你想要,你也应该能够通过添加参数-lz从Build Settings中的“Other Linker Flags”添加libz.tbd。