我正在使用MacOSX10.6SDK,我的部署目标设置为MacOS10.5。我链接到libcrypto (AquaticPrime需要这个),发现我的应用程序没有在Leopard上启动。错误是
dyld: Library not loaded: /usr/lib/libcrypto.0.9.8.dylib
我尝试过以下解决办法,但没有一种有效:
直接链接到libcrypto.0.9.7.dylib.
libcrypto.0.9.7.dylib直接链接到10.6lib目录,并尝试与其链接(这一次链接过程成功,但在Leopard中,应用程序仍然试图查找不存在的libcrypto.0.9.8.dylib文件,因此无法从Mac 10.5.8安装并与之链接(链接成功,但应用程序仍在寻找libcrypto.0.9.8.dylib).)。
是否有办法链接到这个库,但仍然使用10.6SDK?
谢谢。
发布于 2010-04-14 11:20:06
您可以尝试在目标构建设置中将基本SDK设置设置为10.5。
发布于 2010-04-12 08:28:33
根据这里的这个线程(在线程中的第一篇文章:http://lists.apple.com/archives/cocoa-dev/2009/Aug/msg01737.html,“雪豹上的libcrypto”线程列表:http://lists.apple.com/archives/cocoa-dev/2009/Aug/thrd19.html ),我认为解决方案是执行以下操作:
,将您刚刚重命名的文件重命名为您的项目。确保从您的项目中删除任何其他链接的libcrypto框架。
现在,您应该能够构建您的项目,它将工作在10.5和10.6。
(libcryp.0.9.7可在10.5和10.6上使用。您复制的文件只是头的存根,但您只是针对它进行链接,而不是将其嵌入到项目中。由于链接器使用的是安装路径,而不是dylib的实际文件名,因此将其命名为"libmycrypto.dylib“可以消除路径冲突,但仍然允许您根据所需的库进行链接。
FWIW,这是Xcode问题您应该能够链接到/usr/lib/libcryp.dylib --这是一个符号链接--并让它在10.5和10.6上都指向libcrypto的正确版本。然而,Xcode在构建雪豹时似乎总是链接到0.9.8版本,因为某些原因。)
发布于 2010-09-29 18:27:13
根据您使用lib的用途,您可能可以用CommonCrypto替换libcrypto,后者与10.5和10.6都能很好地工作。我只在MD5函数中使用libcrypto,所以我用CommonCrypto/CommonDigest.h和MD5()替换了openssl/md5.h,用CC_MD5()代替了libcrypto,用CommonCrypto代替了libcrypto,现在它可以在两个Leopards上工作。
https://stackoverflow.com/questions/2616738
复制相似问题