这个问题已经讨论过好几次了,但这次我是来问你们的,因为情况是一样的。
首先,问题的要点是,当在HTTPS网页上使用Get()函数TIdHTTP时,会出现一条消息,表示无法加载SSL库。
因此,我将TIdSSLIOHandlerSocketOpenSSL添加到TIdHTTP::IOHandler中,将TIdHTTP::HandleRedirects属性更改为true,将libeay32.dll和ssleay32.dll文件移动到可执行文件的位置,并在C++Builder柏林正常工作。
但是,在C++Builder 2007中,即使我使用相同的环境和Get()代码设置它,也会出现“无法加载SSL”错误。
如果有人遇到过类似的问题,你能给我你的解决方案吗?
发布于 2021-12-08 02:03:47
在注释中,您提到Indy的WhichFailedToLoad()函数正在报告OpenSSL DLL中缺少的各种..._indy函数。Indy正在寻找这些函数,这意味着您使用的是Indy v8或v9,而不是v10。您可以通过查看gsIdVersion单元中的IdGlobal全局变量来验证这一点。
Indy v8和v9需要定制的OpenSSL 0.9.6 DLL.当时,Indy需要访问OpenSSL内部的各种OpenSSL尚未公开的公共访问(这在后来的OpenSSL版本中得到了纠正),因此Indy需要向DLL添加一些自定义函数。您可以从Archive存储库的Indy的OpenSSL-二进制文件文件夹中获取这些DLL。
但是,Indy v8和v9已经过时,不再受支持。它们不支持OpenSSL 1.0.x和更高版本。您必须升级到Indy v10,它使用标准OpenSSL DLL,并正式支持OpenSSL 1.0.2u (对OpenSSL 1.1.x的支持是正在进行的工作,但如果需要使用OpenSSL 1.1.x,例如TLS1.3),可以尝试使用OpenSSL 1.1.x。
https://stackoverflow.com/questions/70257218
复制相似问题