在Cocoa Touch Framework中包装静态库
我有一个胖的静态库,有2个架构片(armv7,arm64)。 我试图使它与swift一起工作,并将其包装到Cocoa Touch Framework中。
我做的事:
OTHER_LDFLAGS
设置为-all_load
ONLY_ACTIVE_ARCH
设置为NO
VALID_ARCHS
和ARCHS
设置为armv7
和arm64
当我将这个.framework放入我的swift项目中时,在我的目标常规设置中添加到嵌入式二进制文件部分,导入框架并使用其中的一个类,我得到undefined symbols for architecture arm64
或undefined symbols for architecture armv7
。
编辑:
不知道它是否有帮助,但我注意到,静态库的大小约为34MB,但生成的.framework的大小约为12MB。
编辑2:
我在静态库和生成的动态库上运行nm -arch arm64 -g myLibraryName
。 动态库不包含静态库具有的所有符号。 看起来像XCode构建过程剥离了很多。
我想你也忘了补充一下:
项目 - > 目标 - > 构建阶段 - > 链接库与二进制文件 :添加+: libz.dylib
或libz.tbd
(由于Xcode 7 *.dylib
文件now *.tbd
文件)
一定要清除文件夹: /User/yourname/Library/Developer/XCode/DerivedData
PS:如果你想你也应该能够添加libz.tbd
通过添加参数-lz从构建设置 “其它链接器标记”。