【问题标题】:What should be the Mach-O Type of a custom iPhone framework?定制 iPhone 框架的 Mach-O 类型应该是什么?
【发布时间】:2013-04-10 03:21:49
【问题描述】:

我正在尝试使用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 错误。

【问题讨论】:

    标签: ios frameworks linker symbols


    【解决方案1】:

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

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

    Link With Standard Libraries = No
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      相关资源
      最近更新 更多