我的应用程序使用静态框架“ A”(作为依赖项构建),其本身使用静态框架“ B”。在Xcode 9中,它可以正常工作。在Xcode 10中,我得到“体系结构x86_64的未定义符号”,其后是从“ B”中定义的“ A”引用的符号列表。似乎符号定义存在于“ A”中,但不存在于数据中。 Xcode 9将数据包含在“ A”中,但Xcode 10不包含。
使用Xcode 9:
nm -m -arch x86_64 "A" | grep "<symbol from B>"
(undefined) external _<symbol from B>
0000000000000f20 (__DATA,__const) external _<symbol from B>
使用Xcode 10:
nm -m -arch x86_64 "A" | grep "<symbol from B>"
(undefined) external _<symbol from B>
为什么这只会在Xcode 10中失败?
答案 0 :(得分:1)
由于某些原因,在创建静态库“ A”时,Xcode 10不会将“使用库链接二进制”中列出的项目传递给libtool。这可能是错误,也可能有逻辑,我将提交错误报告。解决方法是在“ A”的构建设置中将以下内容添加到“其他图书馆员标记”:
"${BUILT_PRODUCTS_DIR}/B.framework/B"