SSL 라이브러리를로드 할 수 없습니다. dll을 찾을 수 없습니다.
델파이 (10.3 커뮤니티 에디션) 프로그램에서 OpenSSL 라이브러리와 함께 Indy를 사용하려고하는데 오류가 발생합니다.
SSL 라이브러리를로드 할 수 없습니다.
내 OpenSSL 라이브러리는 버전 1.0.2u이고 libeay32.dll
및 ssleay32.dll
파일을 내 프로그램 EXE 디렉토리 Windows\SYSWOW64
와 Windows\System32
.
Embarcadero Delphi Patch 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;
문제 해결을 도와 줄 수 있습니까?
답변
프로그램 EXE 디렉토리에
libeay32.dll
및ssleay32.dll
파일을 넣습니다.
괜찮습니다. 이것이 OS가 찾는 첫 번째 장소입니다.
그리고 안으로
Windows\SYSWOW64
그리고 안으로Windows\System32
하지마! 비 시스템 파일은 거기에 속하지 않습니다. 특히 32 비트 파일 전용이고 64 비트 파일 전용 이므로 두 폴더에 동일한 파일 을 넣는 경우 특히 그렇습니다 .Windows\SYSWOW64
Windows\System32
libeay32.dll을로드하지 못했습니다.
이는 Windows가 해당 DLL을 메모리에 전혀로드 할 수 없음을 의미합니다. 아마도 종속 ssleay32.dll
파일을 찾을 수 없기 때문일 수 있지만 32 비트 및 64 비트 버전의 DLL을 혼합했기 때문일 수 있습니다. 앱이 32 비트 EXE로 컴파일 된 경우 두 DLL의 32 비트 버전을 사용해야합니다. 앱이 64 비트 EXE로 컴파일 된 경우 두 DLL의 64 비트 버전을 사용해야합니다.