【发布时间】:2016-03-14 02:59:55
【问题描述】:
我目前正在使用:
- OS X Yosemite 10.10.5
- 最新的 Indy(10.6.2.0,2016 年 3 月 13 日下载 - Indy10_5346.zip)
- 拉撒路 1.4.4
- 最新的openssl
OpenSSL 更具体:
- 根据 home brew 命令行界面打开 ssl-1.0.2g
- 放置在 /usr/local/Cellar/openssl/1.0.2/lib/
- 上述目录下的lib文件为:libcrypto.10.dylib, libcrypto.1.0.0.dylib、libcrypto.dylib、libcrypto.a、 libssl.1.0.0.dylib、libssl.dylib、libssl.a
...
在使用 Indy 之前,我使用 idOpenSSLSetLibPath() 将 pah 传递给 Indy。
但我收到错误:EIdOSSLCouldNotLoadSSLLibrary at:
TIdSSLIOHandlerSocketOpenSSL.Init() -> TIdSSLContext.Create()
...
LoadOpenSSLLibrary() -> IdSSLOpenSSLHeaders.Load()
...
Load()
...
hIDCrypto := LoadSSLCryptoLibrary() -> Result := HModule(HackLoad(...))
...
Result := LoadLibrary(HackLoadFileName(ALibName,ALibVersions[I])); // always zero :(
评论
“GIdOpenSSLPath + SSLCLIB_DLL_name 正确(Indy 在“LoadLibrary”调用中使用“HackLoadFileName”时正确设置了文件扩展名)
-
Indy 尝试迭代/加载以下名称:libcrypto、libcrypto.1.0.0、libcrypto.10、libcrypto.1.0.1、libcrypto.1.0.2
...
附加问题 #1:
- 为什么自制程序在一个名为的文件中提供 openssl 1.0.2g libcrypto.1.0.0.dylib - 是为了最大限度地提高兼容性吗?
...
对可能原因 #1 的思考:
这可能是 Lazarus 为 OS X 编译 32bit 的问题吗? OpenSSL 是 64 位 吗?
【问题讨论】:
标签: macos openssl indy lazarus