![](/img/trans.png)
[英]How do I use files that I dropped into Xcode in a Mac OS X Cocoa App when running the application?
[英]In Xcode, how do I link a dynamic library (libcurl) so that the app also works on older versions of the Mac OS?
我在OS 10.7 Lion上构建和编译的Mac项目中使用libcurl。 我可以使用其他链接器标志中的-lcurl选项或通过将库添加到我的项目来链接到动态库。 一切都按照应有的方式运作。
我希望该应用程序也适用于OS 10.6和10.5。 我相应地设置了部署目标。 当我在其中一个版本的OS中运行应用程序时,我得到一个dyld错误:
库未加载:/usr/lib/libcurl.4.dylib原因:不兼容的库版本:X需要7.0.0或更高版本,但libcurl.4.dylib提供版本6.0.0。
这是Mac OS 10.5的类似问题。
如何在Mac OS 10.7上的Xcode中链接系统的libcurl库,以便应用程序也可以在10.6和10.5上运行?
我看了几个选项:
一个是更改Base SDK,如本文所述: Mac OS X libcurl dylib兼容版本如果我这样做,应用程序工作正常。 但这对我来说不是一个选择。 我必须使用10.7 SDK,因此不能接受回归到旧版本的SDK。
我尝试使用Other Linker Flags中的-weak_library /usr/lib/libcurl.dylib选项对库进行弱连接。 应用程序启动但在我尝试引用libcurl符号时崩溃。 但是,我知道不兼容的代码不是问题,因为它在我更改Base SDK时有效。
我尝试使用dlopen(“libcurl.dylib”,RTLD_LOCAL | RTLD_LAZY)在代码中动态加载库; 该库似乎加载,但我必须手动绑定我引用的所有符号?
当然必须有办法做到这一点。 libcurl库安装在Mac OS 10.5,10.6和10.7上,但应用程序无法在旧版Mac OS上使用可用库。 我怎样才能解决这个问题?
一些选择:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.