iphone - Xcode——获取 force_load 以使用相对路径

标签 iphone xcode ios linker static-libraries

某些库在链接到 Xcode 项目时需要 -all_load 链接器标志。但是,如果库之间存在符号冲突,这会导致链接器错误。解决方案是使用 -force_load,它可以有效地让您在某些库上使用 -all_load,但不能在其他库上使用。

然而,这反过来又导致了一个新问题,至少对我来说是这样。每当我将 -force_load 与库的相对路径一起使用时,链接器总是会发现库与其自身之间存在符号冲突。看来链接器认为绝对路径的库和相对路径的库是不同的库,因此发现库和自己有冲突。

我可以通过使用带有标志的绝对 路径来避免这种情况。但这不是一个很好的解决方案,因为将库的源代码保存在我的文档目录中很方便。但是文档目录的路径在其他机器上会有所不同。

问题:任何人都可以让 force_load 使用库的相对路径吗?

编辑:有关背景信息,请参阅 this question

最佳答案

在 Xcode 4 中,如果您将库项目包含到您的应用项目中,那么您可以将其添加到其他链接器标志中:

-force_load $(BUILT_PRODUCTS_DIR)/<library_name.a>

您仍然需要依赖项,并且您还需要将库添加到框架和库的链接阶段列表中。

编辑:Apple 现在表示,从某些 Xcode 4 版本开始,您可以简单地使用此链接器标志:“-ObjC”来获取具有类别的库以正确加载。该标志在 Xcode 5 中对我来说工作得很好。人们仍在投票支持这个答案,但我怀疑 -Objcflags是现在最好的解决方案。

关于iphone - Xcode——获取 force_load 以使用相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4787279/

相关文章:

iphone - UIPickerView高度自定义

iphone 项目 - 在 xcode 4.3 中复制并重命名

ios - 禁用 iPhone 而非 iPad 的旋转

iphone - 苹果 ipad iphone UITableViewCell 与 UIButton : change of Button image on Button Click?

objective-c - NSregularExpression 和密码

iphone - Three20简单导航

iphone - 按顺序播放多媒体内容

objective-c - 智能识别电话号码和文本(包括国际号码)

c++ - Xcode __pthread_kill + 20

ios - 如何根据segmentedControl的选定索引更改刷新器的功能