2

我正在尝试为我的项目创建单元测试,我有几个项目的工作区,其中包含数十个静态库和应用程序。因此,我在这个工作区中为静态库创建了一个新项目,并向其中添加了 Cocoa Touch UnitTest 包。然后我为这个工作区的一个库中的一个函数添加了一个测试,比如说库 X,我还添加了到我的单元测试包到 lib X 的链接依赖项。但是当我运行单元测试时(Cmd + U)。我收到链接器错误:

Undefined symbols for architecture i386:"_OSVersion", referencedfrom:-[MyUnitTest testMethodFromLibX] in MyUnitTestTest.o "_methodFromLibX", referenced symbol(s) not found for architecture i386

为什么测试包没有与库 X 链接?我可以在 build 文件夹中看到 libX.a 和 MyUnitTests.octet。

4

2 回答 2

1

好的,谢谢大家,我找到了问题的原因 - 我的 libX 是 Objective-C++ 库,所以链接器破坏了所有名称,但我的单元测试是 Objective-C 库,所以当它链接时显然找不到方法或按名称分类,因为链接不同。因此,我将单元测试转换为 Objective-C++ 库(只是更改了 *.m -> *.mm)并且一切正常!

于 2013-06-22T15:54:59.350 回答
0

单元测试在模拟器中运行,因此每个库都需要有 x386 版本。您可以使用命令行来检查每个 - 我相信“文件 lib.a”会这样做,但快速谷歌搜索会找到名称。

于 2013-06-21T12:28:55.793 回答