【问题标题】:Link 3rd party static libraries into static lib's test target result's undefined symbols error将 3rd 方静态库链接到静态库的测试目标结果的未定义符号错误
【发布时间】:2018-09-29 16:09:09
【问题描述】:

我正在开发一个由静态库模块构建的模块化项目。每个静态库都有一个 xctest 测试包。该项目还具有静态的 3rd 方依赖项(例如 Swinject)

测试目标的构建设置中的 Mach-O 类型是“Bundle”。 3rd 方框架被添加到主目标上的“链接框架和库”中,也被添加到我们静态库中的测试包中,框架搜索路径也在两者上正确设置。

但是,虽然在主目标上构建成功,但当我尝试运行测试时,会导致以下编译器错误:

架构 x86_64 的未定义符号: “__T08Swinject9ContainerCMa”,引用自: MyClassTests.o 中的 __T08Swinject9ContainerCSgMa ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

因此,最终在我的理解中,第 3 方框架与测试目标的关联方式与它与主要目标的关联方式相同,但基于测试包构建是行不通的。我错过了什么吗?

【问题讨论】:

    标签: ios xcode unit-testing static xctest


    【解决方案1】:

    您的测试目标会自动链接到您的主要目标。但是测试目标引用的任何其他框架和库都必须显式链接。他们不是免费的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多