Delphi与Indy的兼容性

Delphi与Indy的兼容性,delphi,indy,Delphi,Indy,带有SSL的Delphi失败,错误为“无法加载SSL库” 我支持使用Indy库(目前为v10)的传统Delphi5应用程序。对我们的web服务器进行HTTP调用。在我们将Web服务器切换到HTTPS之前,它一直工作正常。现在我得到错误“无法加载SSL库” 在挖掘错误源之后,它可以加载openssl DLL,但找不到三个函数: des_set_odd_parity des_set_key des_ecb_encrypt 我试过使用Indy 9和Indy 10源代码。我已经尝试了很多版本的dll文

带有SSL的Delphi失败,错误为“无法加载SSL库”

我支持使用Indy库(目前为v10)的传统Delphi5应用程序。对我们的web服务器进行HTTP调用。在我们将Web服务器切换到HTTPS之前,它一直工作正常。现在我得到错误“无法加载SSL库”

在挖掘错误源之后,它可以加载openssl DLL,但找不到三个函数:

des_set_odd_parity
des_set_key
des_ecb_encrypt
我试过使用Indy 9和Indy 10源代码。我已经尝试了很多版本的dll文件。当我切换到Indy 9时,我确实设法获得了不同的功能,但似乎什么都不起作用


我很想做一些引人注目的事情,比如有一个库(用XE编写)来完成HTTP工作。但在我这么做之前,我希望有一个Indy和openssl DLL的组合,可以为Delphi 5工作。

您可以在
IdSSLOpenSSLHeaders
单元中使用Indy的
WhichFailedToLoad()
函数来找出Indy无法加载openssl库的原因。这可能是因为DLL本身无法加载到内存中,或者是DLL缺少Indy所需的导出。如果它说找不到某些函数,那么您可能使用了不正确版本的DLL。在您的示例中,您可能正在使用使用定义了
OPENSSL\u NO\u DES
的DLL进行编译。请尝试使用在找到的DLL,它们与Indy完全兼容。谢谢您的回复。在确保我正在使用引用位置的库之后,这就是现在失败的TOLOAD()返回:“SSL\CTX\u set\u info\u callback\u indy X509\u STORE\u CTX\u get\u data\u indy X509\u get\u not before\u indy X509\u get\u notAfter\u indy SSL\u id\u indy SSL\u SESSION\u get\u id\u CTX\u indy SSL\u CTX\u get\u version\u indy SSL\u CTX\u set\u选项\u indy des des set\u奇偶校验des\u set\u密钥加密”10,但是只有Indy 9在OpenSSL DLL中查找
…\u Indy
函数。您不能将现代OpenSSL DLL与Indy 9一起使用,因为它们没有
…\u Indy
函数。您需要为Indy 9定制的旧OpenSSL 0.9.6 DLL。那些DLL是富尔根的。Indy 10使用富尔根的DLL。仅供参考。我从来没有真正解决过这个问题。相反,我在东京编写了一个dll,它执行实际的HTTPS调用。