我正在做一个模块化的项目,这个项目是由静态库模块构建的。每个静态库都有一个xctest包。该项目还具有静态的第三方依赖关系(例如Swinject)
Mach-O类型在测试目标的构建设置中是"Bundle“。第三方框架被添加到主要目标上的“链接框架和库”中,也添加到我们的静态库中的测试包中,框架搜索路径也被正确地设置在这两个方面。
但是,虽然构建在主目标上是成功的,但当我尝试运行测试时,它会导致以下编译器错误:
架构的未定义符号x86_64:"__T08Swinject9ContainerCMa",引用自:__T08Swinject9ContainerCSgMa中的MyClassTests.ld:符号(S)找不到的架构x86_64 clang:错误:链接器命令失败,退出代码1(使用-v查看调用)
因此,根据我的理解,第三方框架与测试目标的链接方式与与主要目标的链接方式相同,但是构建在测试包上的方法并不有效。我是不是遗漏了什么?
发布于 2018-04-29 22:20:27
您的测试目标自动链接到您的主要目标。但是,测试目标引用的任何其他框架和库都必须显式链接。他们不是免费来的。
https://stackoverflow.com/questions/49916263
复制相似问题