Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 框架无法在Xcode 10中链接_Ios_Xcode_Linker_Xcode10 - Fatal编程技术网

Ios 框架无法在Xcode 10中链接

Ios 框架无法在Xcode 10中链接,ios,xcode,linker,xcode10,Ios,Xcode,Linker,Xcode10,我的应用程序使用一个静态框架a作为依赖项构建,它本身使用一个静态框架B。在Xcode 9中,这个构建和运行良好。在Xcode 10中,我得到架构x86_64的未定义符号,后面是从B中定义的a中引用的符号列表。符号定义似乎存在于a中,但不存在于数据中。Xcode 9包含数据,但Xcode 10不包含 使用Xcode 9: nm -m -arch x86_64 "A" | grep "<symbol from B>" (undefined) extern

我的应用程序使用一个静态框架a作为依赖项构建,它本身使用一个静态框架B。在Xcode 9中,这个构建和运行良好。在Xcode 10中,我得到架构x86_64的未定义符号,后面是从B中定义的a中引用的符号列表。符号定义似乎存在于a中,但不存在于数据中。Xcode 9包含数据,但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中失败?

2020 Xcode 12编辑:虽然原始问题似乎已得到修复,但如果库B的iOS部署目标低于库A,则此问题仍可能发生

由于某些原因,在创建静态库A时,Xcode 10没有将“带库的链接二进制文件”中列出的项传递给libtool。这可能是一个错误,或者可能有一些逻辑,我将提交一个错误报告。解决方法是将以下内容添加到的“生成设置”中的其他库管理员标志中:

"${BUILT_PRODUCTS_DIR}/B.framework/B"

如图所示,nm告诉您B符号在A中被引用,但未定义。因此,您需要链接B来解析这些引用,而不是这样做。如果你以前这样做过,你是如何停止链接B的,从这里是看不见的。迈克,我可以在Xcode 9和10之间切换。使用9时,A包含来自B的符号数据。使用10时,A不包含。有些事情发生了变化,导致Xcode 10带或不在A中包含符号数据。这很清楚,您是对的。恐怕帮不上忙。Xcode 10中的libtool命令似乎没有在Link Binary中列出的框架以及传递给它的库。在Xcode 9中也有。您对该错误报告有任何响应吗?它们在Xcode 10.2中已修复。我不记得它是不是修好了,但我想可能是修好了。顺便说一句,非常感谢!