链接到libcrypto for Leopard?

adi*_*dib 11 macos cocoa openssl aquaticprime

我使用的是Mac OS X 10.6 SDK,我的部署目标设置为Mac OS 10.5.我正在链接到libcrypto(AquaticPrime需要这个)并发现我的应用程序没有在Leopard上启动.错误是

dyld: Library not loaded: /usr/lib/libcrypto.0.9.8.dylib

我尝试了以下变通方法,但它们都不起作用:

  • 直接链接libcrypto.0.9.7.dylib(10.6 SDK拒绝直接链接libcrypto.0.9.7.dylib.
  • 将10.5 SDK的版本复制libcrypto.0.9.7.dylib到10.6 lib目录并尝试与其链接(这次链接过程成功但在Leopard中,应用程序仍尝试查找不存在的libcrypto.0.9.8.dylib文件,因此不会启动).
  • libcrypto.0.9.7.dylib从Mac OS X 10.5.8安装进行复制并与之链接(链接成功但应用程序仍在查找libcrypto.0.9.8.dylib).

有没有办法链接到这个库,仍然使用10.6 SDK?

谢谢.

Sim*_*lli 22

根据这个帖子在这里(线程中的第一篇帖子:http://lists.apple.com/archives/cocoa-dev/2009/Aug/msg01737.html,"雪豹上的libcrypto"主题列表:http://列表. apple.com/archives/cocoa-dev/2009/Aug/thrd19.html),我相信解决方案是执行以下操作:

  1. 转至/Developer/SDKs/MacOSX10.5.sdk/usr/lib/.从此文件夹中,将"libcrypto.0.9.7.dylib"复制到项目源文件夹.

  2. 将刚刚复制的文件重命名为"libmycrypto.dylib".

  3. 将刚刚重命名的文件添加到项目中.确保从项目中删除任何其他链接的libcrypto框架.

  4. 完成构建设置,并确保删除 "-lcrypto"链接器标志.(它通常放在"其他链接标志"设置中.)

现在你应该能够构建你的项目,它将适用于10.5和10.6.

(libcrypto.0.9.7在10.5和10.6上都可用.您复制的文件只是标题的存根,但您只是链接它而不是将其嵌入到项目中.由于链接器使用安装路径而不是命名为"libmycrypto.dylib"的dylib的实际文件名消除了路径冲突,但仍然允许您链接到您需要的库.

FWIW,这是一个Xcode问题.您应该能够链接/usr/lib/libcrypto.dylib - 符号链接 - 并在10.5和10.6上定位正确版本的libcrypto.但是,出于某种原因,在Snow Leopard上构建时,Xcode似乎总是链接到0.9.8版本.)


Jer*_*myP 1

您可以尝试在目标构建设置中将基础 SDK 设置为 10.5。