gpt4 book ai didi

delphi - 无法加载 SSL 库 - 找不到 dll

转载 作者:行者123 更新时间:2023-12-04 22:36:21 33 4
gpt4 key购买 nike

在我的 Delphi(10.3 社区版)程序中,我尝试将 Indy 与 OpenSSL 库一起使用,但收到错误消息

Could not load SSL library


我的 OpenSSL 库是 1.0.2u 版本,我把 libeay32.dllssleay32.dll我的程序 EXE 目录和 Windows\SYSWOW64 中的文件和 Windows\System32 .
我已经安装了 Embarcadero Delphi 补丁 RS1033_Indy_SSL_Patch .
异常后,我调用 WhichFailedToLoad()结果是

Failed to load libeay32.dll


这是一个引发异常的简单程序:
url := 'https://www.google.it';
try
Web := TIdHTTP.Create(nil);
hIOHand := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
hIOHand.SSLOptions.SSLVersions := [sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2,sslvSSLv23];
Web.IOHandler := hIOHand;
Web.Request.UserAgent := INET_USERAGENT; //Custom user agent string
Web.RedirectMaximum := INET_REDIRECT_MAX; //Maximum redirects
Web.HandleRedirects := INET_REDIRECT_MAX <> 0; //Handle redirects
Web.ReadTimeOut := INET_TIMEOUT_SECS * 1000; //Read timeout msec
try
Sito := Web.Get(Url);
Sito := DateToStr(Web.Response.LastModified) + Sito;
except
on e : exception do
stg := WhichFailedToLoad();
end;
finally
Web.Free;
end;
你能帮我解决问题吗?

最佳答案

I put the libeay32.dll and ssleay32.dll files in my program EXE directory


那也行。那是操作系统将寻找它们的第一个位置。

and in Windows\SYSWOW64 and in Windows\System32


不要那样做!非系统文件不属于那里。特别是如果您将相同的文件放在两个文件夹中,因为 Windows\SYSWOW64仅适用于 32 位文件和 Windows\System32仅适用于 64 位文件。

Failed to load libeay32.dll


这意味着 Windows 根本无法将该 DLL 加载到内存中。可能是因为找不到依赖的 ssleay32.dll文件,但更有可能是因为您混淆了 32 位和 64 位版本的 DLL。如果您的应用程序编译为 32 位 EXE,则必须使用两个 DLL 的 32 位版本。如果您的应用程序编译为 64 位 EXE,则必须使用两个 DLL 的 64 位版本。

关于delphi - 无法加载 SSL 库 - 找不到 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63510064/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com