我使用内置和OS 10.7狮子编译在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类似的问题。
我怎么能反对在Xcode系统的libcurl库为在Mac OS 10.7链接,这样的应用程序也将在10.6和10.5运行?
我已经看了几个选项:
一是要更改基本的SDK,因为在这篇文章建议: Mac OS X中的libcurl dylib兼容版本如果我这样做,应用程序工作正常。 但是,这不是我的选择。 我必须使用10.7 SDK,所以回归到旧版本的SDK是不能接受的。
我试着使用其它链接器标记的-weak_library /usr/lib/libcurl.dylib选项对库弱链接。 当我尝试引用的libcurl符号的应用程序将启动,但随后崩溃。 但是,我知道,因为当我更改基础SDK可它不是用不兼容的代码有问题。
我已经使用dlopen(“libcurl.dylib”,RTLD_LOCAL | RTLD_LAZY)试图动态加载内代码库; 该库似乎加载,但我必须手动绑定所有我引用的符号?
当然必须有办法做到这一点。 libcurl库安装在Mac OS 10.5,10.6,和10.7,但应用程序无法使用可用库在旧版本的Mac OS。 我怎样才能解决这个问题?