我有一个包含 2 个架构切片(armv7、arm64)的胖静态库。
我正在尝试让它与 swift 一起工作并将其包装到 Cocoa Touch Framework 中。
我做什么:
- 创建Cocoa Touch框架项目
- 拖动带有标头的.a静态库
- Set
OTHER_LDFLAGS
to -all_load
- Set
ONLY_ACTIVE_ARCH
to NO
- Set
VALID_ARCHS
and ARCHS
to armv7
and arm64
- 使用发布构建配置进行构建
- 从 DerivedData/../../Products/ 获取 .framework 文件
当我将此 .framework 放入我的 swift 项目中,添加到我的目标常规设置中的嵌入式二进制文件部分,导入框架并使用其类之一时,我得到undefined symbols for architecture arm64
or undefined symbols for architecture armv7
.
EDIT:
不确定它是否有帮助,但我注意到静态库的大小约为 34MB,但生成的 .framework 的大小约为 12MB。
EDIT 2:
I ran nm -arch arm64 -g myLibraryName
在静态库和生成的动态库上。动态库不包含静态库具有的所有符号。看起来 XCode 构建过程去掉了很多。
我想你也忘记添加:
Project->Target->构建阶段->将二进制文件与库链接:
添加+:libz.dylib
or libz.tbd
(从 Xcode 7 开始*.dylib
文件是now *.tbd
files)
请务必清理该文件夹:/User/yourname/Library/Developer/XCode/DerivedData
P.S:如果您愿意,您还应该能够添加libz.tbd
from “其他链接器标志” in the 构建设置通过添加参数 -lz。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)