"Could Not Load SSL Library" C++Builder 中的错误
"Could Not Load SSL Library" error in C++Builder
这个问题已经讨论过好几次了,这次来问你也是一样的情况。
首先问题的重点是在HTTPS网页上使用TIdHTTP
的Get()
功能时,出现无法加载SSL库的提示
所以我将 TIdSSLIOHandlerSocketOpenSSL
添加到 TIdHTTP::IOHandler
,将 TIdHTTP::HandleRedirects
属性 更改为 true,将 libeay32.dll
和 ssleay32.dll
文件移动到可执行文件的位置,它在 C++Builder Berlin 中正常运行。
但是,在C++Builder 2007中,即使我使用相同的环境和Get()
代码设置它,也会出现“Could Not Load SSL Library”错误。
如果有谁遇到过类似的问题,能否请教一下您的解决方案?
在评论中,您提到 Indy 的 WhichFailedToLoad()
函数报告 OpenSSL DLL 中缺少各种 ..._indy
函数。 Indy 正在寻找这些函数的事实意味着您使用的是 Indy v8 或 v9,而不是 v10。您可以通过查看 IdGlobal
单元中的 gsIdVersion
全局变量来验证这一点。
Indy v8 和 v9 需要 定制的 OpenSSL 0.9.6 DLL。当时,Indy 需要访问 OpenSSL 尚未公开 public 访问权限的各种 OpenSSL 内部结构(在后来的 OpenSSL 版本中得到纠正),因此 Indy 需要向 DLL 添加一些自定义函数。您可以从 Indy's OpenSSL-Binaries 存储库的 Archive
文件夹中获取这些 DLL。
但是,Indy v8 和 v9 已经过时,不再受支持。它们不支持 OpenSSL 1.0.x 及更高版本。您将必须升级到 Indy v10,它使用 standard OpenSSL DLL,并且 officially 最高支持 OpenSSL 1.0.2u(支持 OpenSSL 1. 1.x 是 work in progress,但如果您需要使用 OpenSSL 1.1.x,例如 TLS 1.3),您可以尝试一下。
这个问题已经讨论过好几次了,这次来问你也是一样的情况。
首先问题的重点是在HTTPS网页上使用TIdHTTP
的Get()
功能时,出现无法加载SSL库的提示
所以我将 TIdSSLIOHandlerSocketOpenSSL
添加到 TIdHTTP::IOHandler
,将 TIdHTTP::HandleRedirects
属性 更改为 true,将 libeay32.dll
和 ssleay32.dll
文件移动到可执行文件的位置,它在 C++Builder Berlin 中正常运行。
但是,在C++Builder 2007中,即使我使用相同的环境和Get()
代码设置它,也会出现“Could Not Load SSL Library”错误。
如果有谁遇到过类似的问题,能否请教一下您的解决方案?
在评论中,您提到 Indy 的 WhichFailedToLoad()
函数报告 OpenSSL DLL 中缺少各种 ..._indy
函数。 Indy 正在寻找这些函数的事实意味着您使用的是 Indy v8 或 v9,而不是 v10。您可以通过查看 IdGlobal
单元中的 gsIdVersion
全局变量来验证这一点。
Indy v8 和 v9 需要 定制的 OpenSSL 0.9.6 DLL。当时,Indy 需要访问 OpenSSL 尚未公开 public 访问权限的各种 OpenSSL 内部结构(在后来的 OpenSSL 版本中得到纠正),因此 Indy 需要向 DLL 添加一些自定义函数。您可以从 Indy's OpenSSL-Binaries 存储库的 Archive
文件夹中获取这些 DLL。
但是,Indy v8 和 v9 已经过时,不再受支持。它们不支持 OpenSSL 1.0.x 及更高版本。您将必须升级到 Indy v10,它使用 standard OpenSSL DLL,并且 officially 最高支持 OpenSSL 1.0.2u(支持 OpenSSL 1. 1.x 是 work in progress,但如果您需要使用 OpenSSL 1.1.x,例如 TLS 1.3),您可以尝试一下。