代码之家  ›  专栏  ›  技术社区  ›  Nick

框架在Xcode 10中链接失败

  •  0
  • Nick  · 技术社区  · 6 年前

    我的应用程序使用一个静态框架“a”(作为依赖项构建),而它本身使用一个静态框架“B”。在xcode9中,它构建并运行良好。在xcode10中,我得到“架构x86\u64的未定义符号”,后面是从“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>
    

    nm -m -arch x86_64 "A" | grep "<symbol from B>"
                     (undefined) external _<symbol from B>
    

    为什么只有xcode10会失败?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Nick    4 年前

    2020 Xcode 12编辑: 虽然最初的问题似乎已经解决,但如果库B的iOS部署目标低于库A,则仍然可能发生此问题。

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

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