什么应该是自定义iPhone框架的Mach-O类型?

时间:2013-04-17 11:24:52

标签: ios frameworks linker symbols

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

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

在终端上,我对框架的二进制文件进行了nm调用,它具有普通可执行文件的符号,包括_main / _objc_unretainedPointer /等。难怪存在重复错误:框架有自己的可执行符号,测试应用也是如此。

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

而且......教程也是错误的?

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

1 个答案:

答案 0 :(得分:1)

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

问题是原始问题(教程A)中的教程出错了。它没有我在另一个tutorial(教程B)中找到的捆绑目标设置。

Link With Standard Libraries = No

从教程A中未设置,因此默认为“是”。在完成教程B并将其设置为No之后,使用构建的框架的测试应用程序成功编译并按预期运行。

回答标题问题:Mach-O类型(至少对于本案例和教程A& B)应该是可重定位目标文件