내 프로그램에서 libcurl.dll을 사용해야합니다. (바이너리는 내 프로그램의 libcurl.dll이 "A.exe"임), libcurl.dll은 zlib1.dll, libeay32.dll에 의존합니다 , ssleay32.dll. 하지만 이미 A.exe 폴더에있는 다른 버전의 libeay32.dll이 있습니다. 그래서 "CURL"폴더를 만들고 이번에 소개 한 새로운 4 DLL을 넣고 동적 DLL로드를 사용하여 libcurl.dll을 호출 할 계획입니다.windows C++ DLL 동적로드
=====================
Main folder | A.exe, libeay32.dll(old one), Folder "CURL" ----- | | libcurl.dll, zlib1.dll, libeay32.dll, ssleay32.dll =====================
질문은 어떻게 폴더 "CURL"에 DLL을로드 할 수 내 프로그램을 제어 할 수 있다는 것입니다 . "A.exe"가 호출하여 CURL \ libcurl.dll을로드 할 수 있습니다.
HMODULE hModule = LoadLibrary (_ Curl \ libcurl.dll)); 그러나 어떻게 zlib1.dll, libeay32.dll, ssleay32.dll의 경로를 제어 할 수 있습니까? Windows는 기본적으로 A.exe 로컬 폴더에서 DLL을 검색하는 것으로 보입니다.
높은 버전의 OS에서 작동 할 수있는 솔루션을 찾았습니다. 다음을 사용하여 DLL을로드하십시오. LoadLibraryEx ("FullPathofA.exe", NULL, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_DEFAULT_DIRS); 낮은 버전의 OS에서 작동하는 방법이 있습니까? Windows 7, Windows Server 2008 R2, Windows Vista 및 Windows Server 2008 :이 값을 사용하려면 KB2533623이 설치되어 있어야합니다. Windows Server 2003 및 Windows XP :이 값은 지원되지 않습니다. – Leon
이 구성표가 작동한다고 생각하지 않습니다 :'libeay32.dll'이 이미로드되어 있으므로 버전이 다를지라도 다시로드되지 않습니다! – MSalters
@MSalters 그러나 내가 libcurl.dll을로드하기 전에 적절한 버전의 libeay32.dll을로드하면 어떻게 될까요? – SamuelVimes