如何将Indy迁移到64位的OpenSSL DLL?

编程语言 2026-07-08

我正在将我的Delphi 12应用从32位迁移到64位。目前我使用Indy,并使用32位 OpenSSL DLL(libeay32.dll和 ssleay32.dll)。

当我切换到64位并尝试运行应用时,出现 'Could not load SSL library' 错误。然后我去GitHub下载这些DLL的 64位版本,来源于 https://github.com/IndySockets/OpenSSL-Binaries

下载了文件,但里面有很多文件夹,如:

openssl-1.0.2q-x64_86-win64
openssl-1.0.2r-x64_86-win64
openssl-1.0.2s-x64_86-win64

尝试使用其中的第一个,但仍然出现相同的异常。应该使用哪一个?即使x64文件夹中的DLL名称也带有 '32',让我很困惑。

解决方案

当我切换到64位并尝试运行应用时,我会看到 'Could not load SSL library' 错误。

当这种情况发生时,你可以使用Indy的 WhichFailedToLoad() 函数来查看实际失败的原因。

下载了文件,但里面有很多文件夹,如:

openssl-1.0.2q-x64_86-win64
openssl-1.0.2r-x64_86-win64
openssl-1.0.2s-x64_86-win64

那些是压缩包,而不是文件夹。每个压缩包只有一组DLL。

尝试使用第一种,但仍然出现相同的异常。我应该使用哪一个?

最新的那个:openssl-1.0.2u-x64_86-win64

即使是在x64文件夹中的DLL名称也带有 '32'

是的,这就是OpenSSL在 1.0.2版本中的命名方式,为了向后兼容。在OpenSSL 1.1中,DLL名称已更改(libeay32 -> libcryptossleay32 -> libssl)。


也就是说,1.0.2是一个非常旧的OpenSSL版本。Indy内置的OpenSSL代码不支持OpenSSL 1.1+。要在Indy中使用现代OpenSSL版本(当前为4.0),你可以使用 TaurusTLSIndySecOpenSSL

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章