我正在尝试使用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
错误。
答案 0 :(得分:1)
我解决了我的问题并使设置正常工作,但它没有回答标题问题。
问题是原始问题(教程A)中的教程出错了。它没有我在另一个tutorial(教程B)中找到的捆绑目标设置。
Link With Standard Libraries = No
从教程A中未设置,因此默认为“是”。在完成教程B并将其设置为No之后,使用构建的框架的测试应用程序成功编译并按预期运行。
回答标题问题:Mach-O类型(至少对于本案例和教程A& B)应该是可重定位目标文件。