Мне нужно использовать libcurl.dll в моей программе (двоичная ссылка на libcurl.dll в моей программе - «A.exe»), libcurl.dll полагаться на zlib1.dll, libeay32.dll , ssleay32.dll. , но есть еще одна версия libeay32.dll, которая уже существует в папке A.exe. Итак, я планирую создать папку «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 в папку «CURL» , Я могу контролировать загрузку «A.exe» CURL \ libcurl.dll по вызову
HMODULE hModule = LoadLibrary (_T ("Curl \ libcurl.dll")); Но как я могу контролировать путь zlib1.dll, libeay32.dll, ssleay32.dll. Кажется, что окна ищут 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 Но что, если он загружает правильную версию libeay32.dll, как я уже сказал, перед загрузкой libcurl.dll? – SamuelVimes