одним из решений проблемы будет использование функции SetDllDirectory
; но это должно быть первым делом, которое вы выполняете в своей программе (что трудно сделать), мое решение состоит в том, чтобы использовать стороннюю программу для установки каталога dll, а затем вызывать ваш EXE-файл как новый процесс:
Это третье лицо, которое будет EXE-файлом:
#include <windows.h>
SetDllDirectory(_T(".dll location"));
STARTUPINFOW siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
if (CreateProcessW(L".exe location",NULL, NULL, NULL, FALSE,
0, NULL, NULL,
&siStartupInfo, &piProcessInfo))
{
/* This line waits for the process to finish. */
/* You can omit it to keep going whilst the other process runs */
//dwExitCode = WaitForSingleObject(piProcessInfo.hProcess, (SecondsToWait * 1000));
}
else
{
/* CreateProcess failed */
//iReturnVal = GetLastError();
}
return 0;