将第三方静态库链接到静态lib的测试目标结果的未定义符号错误

时间:2018-04-19 08:28:33

标签: ios xcode unit-testing static xctest

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

Mach-O键入测试目标的构建设置是" Bundle"。第三方框架被添加到"链接框架和库"在主目标上以及我们的静态库中的测试包中,框架搜索路径也在两者上都正确设置。

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

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

所以最终在我的理解中,第三方框架以与链接到主目标相同的方式链接到测试目标,但是在测试包上构建不起作用。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

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