我正在开发一个模块化项目,该项目由作为静态库的模块构建而成。每个静态库都有一个 xctest 测试包。该项目还具有静态的第 3 方依赖项(例如 Swinject)
测试目标build设置中的 Mach-O Type 是“Bundle”。第 3 方框架被添加到主要目标上的“链接框架和库”以及我们静态库中的测试包中,框架搜索路径也在两者上正确设置。
然而,虽然在主要目标上构建成功,但当我尝试运行测试时,它会导致以下编译器错误:
架构 x86_64 的 undefined symbol : “__T08Swinject9ContainerCMa”,引用自: __T08Swinject9ContainerCSgMa 在 MyClassTests.o ld: 找不到体系结构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
所以最终在我的理解中,第 3 方框架以与链接到主要目标相同的方式链接到测试目标,但是在测试包上构建是行不通的。我错过了什么吗?
最佳答案
您的测试目标会自动链接到您的主要目标。但是测试目标引用的任何其他框架和库都必须显式链接。他们不是免费来的。
关于ios - 将 3rd 方静态库链接到静态库的测试目标结果的 undefined symbol 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49916263/