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

标签 ios frameworks linker symbols

我正在尝试使用 this tutorial 构建一个 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 错误。

最佳答案

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

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

Link With Standard Libraries = No

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

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

关于ios - 自定义 iPhone 框架的 Mach-O 类型应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058765/

相关文章:

c++ - C++ 库与 CMake 的相互依赖

c - 嵌入式系统中的内存冲突

C++ 程序在链接期间获取对动态 C 库的 undefined reference

ios - Xamarin Forms iOS listview 的单元格自动调整其内容大小(图片来自 url)

iOS 使用 CoreGraphics 在 Canvas 内旋转图像

ios - 更改 iOS 框架的导入

用于高级用户帐户保护的 Java 库

algorithm - 用于寻路的图形沙箱

ios - 根据 UIPanGestureRecognizer 翻译值更改 UIImageView 中的图像

iOS10 消息链接预览图