Kai*_*udi 25 iphone xcode linker objective-c
我遇到了双重绑定,一方面是我的iPhone应用程序使用的第三方静态库之一,必须在应用程序项目或目标设置中设置链接器标志-all_load,否则应用程序崩溃另一方面,运行时没有找到一些从lib内部调用的符号,另一方面不能在应用程序级别上设置另一个第三方静态库-all_load,或者由于"重复符号" - 链接错误,应用程序将无法构建.为了解决这个问题,我现在想要使用force_load instant of load_all,因为它由于文档它的作用与all_load相同,但仅适用于传递的路径或lib文件,而不是所有的库.force_load的问题是,我没有线索,如何通过xcode project-或target-settings传递路径或文件作为参数.我想到的所有语法可能性都会导致xcode认为它的另一个链接器标志而不是前一个的参数,或者链接器抛出与语法相关的错误,或者与未设置相比,标志根本不执行任何操作.我还在文本编辑器中打开了.pbxproj文件,手动将其编辑为正确的命令行语法,但是当使用xcode重新加载项目时,它会自动更改语法,将force_load解释为单独的标志.
有人对这个问题有所了解吗?
Thx,Kaiserludi.
par*_*par 18
我刚试过这个.我编译了一个静态armv6,armv7和i386胖二进制PCRE,用于我的iPhone项目.我的项目通常只是将我的库添加到项目中并且链接正常.所以我取消选中libpcre.a的目标成员资格框并重建.正如所料,我为pcre符号得到了一堆丢失的符号链接器错误.然后我打开了目标设置窗口并编辑了"其他链接器标志"部分.我补充说:
-force_load lib/pcre/libpcre.a
Run Code Online (Sandbox Code Playgroud)
该lib目录与我的project.xcodeproj文件位于同一目录中.
它链接得很好所以我知道force_load命令工作(我可以看到它在xcode构建文件时添加到构建标志).
希望有所帮助.
更新:
我还尝试将系统库添加到"Other Linker Flags"行,如下所示:
-force_load src/pcre/libpcre.a -force_load ${SDKROOT}/usr/lib/libz.dylib
Run Code Online (Sandbox Code Playgroud)
这也有效.
| 归档时间: |
|
| 查看次数: |
11432 次 |
| 最近记录: |