Текущий каталог процесса можно получить с помощью функции GetCurrentDirectory()
:
TCHAR bufCurrentDirectory[MAX_PATH + 1] = { 0 };
DWORD dwNumCharacters = ::GetCurrentDirectory(MAX_PATH, bufCurrentDirectory);
if(dwNumCharacters == 0) error();
Теперь путь к текущему каталогу процесса находится в bufCurrentDirectory
, если только функция не завершилась. Просто добавьте "\\mydll.dll"
к пути, и у вас будет абсолютный путь к DLL.
Поскольку текущий каталог процесса является несколько переменным, может быть лучше использовать путь к исполняемому файлу. Чтобы получить путь к текущему исполняемому файлу, вы можете сделать:
TCHAR bufExePath[MAX_PATH + 1] = { 0 };
DWORD dwNumCharacters = ::GetModuleFileName(NULL, bufExePath, MAX_PATH);
if(dwNumCharacters == 0) error();
Теперь bufExePath
содержит весь путь к exe, включая "\\my.exe"
. Замените my.exe
на mydll.dll
, и вы получите абсолютный путь к DLL. Я бы рекомендовал этот метод по сравнению с GetCurrentDirectory()
из-за соображений безопасности.