SSLライブラリを読み込めませんでした-dllが見つかりません
Delphi(10.3コミュニティエディション)プログラムで、OpenSSLライブラリでIndyを使用しようとしましたが、エラーが発生します
SSLライブラリを読み込めませんでした
私のOpenSSLライブラリはバージョン1.0.2uであり、libeay32.dll
およびssleay32.dll
ファイルをプログラムのEXEディレクトリ、およびに配置Windows\SYSWOW64
しWindows\System32
ます。
EmbarcaderoDelphiパッチRS1033_Indy_SSL_Patchをインストールしました。
例外の後、私は電話WhichFailedToLoad()
をし、結果は
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;
問題を解決するのを手伝ってくれませんか。
回答
私は置く
libeay32.dll
とssleay32.dll
私のプログラムEXEディレクトリ内のファイルを
それは結構です。これは、OSがそれらを探す最初の場所です。
そして中
Windows\SYSWOW64
やでWindows\System32
そうしないでください!非システムファイルはそこに属していません。特に、両方のフォルダに同じファイルを配置する場合はWindows\SYSWOW64
、32ビットファイルWindows\System32
のみを対象とし、64ビットファイルのみを対象としているためです。
libeay32.dllの読み込みに失敗しました
これは、WindowsがそのDLLをメモリにまったくロードできなかったことを意味します。おそらく依存ssleay32.dll
ファイルが見つからなかったためですが、DLLの32ビットバージョンと64ビットバージョンを混同したためである可能性が高くなります。アプリが32ビットEXEとしてコンパイルされている場合は、両方のDLLの32ビットバージョンを使用する必要があります。アプリが64ビットEXEとしてコンパイルされている場合は、両方のDLLの64ビットバージョンを使用する必要があります。