我需要在我的程序中使用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 =====================
的問題是,我怎麼能控制我的程序加載在文件夾「捲曲」的DLL 。 我可以通過調用來控制「A.exe」加載CURL \ libcurl.dll
HMODULE hModule = LoadLibrary(_T(「Curl \ libcurl.dll」)); 但是我怎樣才能控制zlib1.dll,libeay32.dll,ssleay32.dll的路徑。 看來,Windows搜索DLL中的默認A.exe本地文件夾。
我找到一個解決方案,可以在高版本操作系統上工作。使用以下代碼加載DLL: LoadLibraryEx(「FullPathofA.exe」,NULL,LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_DEFAULT_DIRS); 在低版本操作系統上是否有方法工作? 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