1

我正在尝试使用本教程构建一个 iPhone 框架,但是当我构建我的测试应用程序(将使用构建框架的应用程序)时,它出现了一个错误:

duplicate symbol _objc_unretainedPointer in:
...
8 duplicate symbols for architecture i386

在终端上,我nm调用了框架的二进制文件,它具有正常可执行文件的符号,包括_main/ _objc_unretainedPointer/etc。难怪会出现重复的错误:框架有自己的可执行符号,测试应用程序也有。

我的问题是,框架的正确 Mach-O 类型应该是什么,以便它没有_main/etc 符号?应该如何将它添加到测试应用程序中?

而且...教程也有错误吗?

我尝试过:我将框架的 Mach-O 类型设置为动态库,它摆脱了_main/etc 符号并且测试应用程序构建良好,但是当测试应用程序在模拟器上运行时,它有一个dyld: Library not loaded错误。

4

1 回答 1

1

我解决了我的问题并使设置正常工作,但它没有回答标题问题。

问题是原始问题(教程A)中的教程有误。它缺少我在另一个教程(教程 B)中找到的捆绑目标设置。

Link With Standard Libraries = No

在教程 A 中,它没有设置,所以它默认为是。在完成教程 B 并将其设置为否后,使用构建框架的测试应用程序成功编译并按预期运行。

要回答标题问题:Mach-O 类型(至少对于本例和教程 A 和 B)应该是Relocatable Object File

于 2013-04-18T03:22:51.540 回答