Мое приложение реализует своего рода архитектуру плагинов, используя LoadLibrary
, GetProcAddress
и FreeLibrary
. Поскольку все мои dll находятся в том же каталоге, что и исполняемый файл, когда я ищу dll, я получаю каталог исполняемого файла и ищу там, используя эту функцию:
string FileSystem::GetPathToProgramDirectory(){
char progname[MAX_PATH];
GetModuleFileNameA( NULL, progname, MAX_PATH );
PathRemoveFileSpecA( progname );
return string( progname );
}
Это работает на производстве, но когда я пытаюсь запустить его в интеграционном тесте с использованием NUnit, исполняемый каталог оказывается NUnit, и загрузка не выполняется.
Имейте в виду, это неуправляемый C ++; в управляемом C ++ я решил это, используя Path::GetDirectoryName(Assembly::GetExecutingAssembly()->Location)
, который работает в обоих случаях, но неуправляемый случай поставил меня в тупик. Есть ли для этого неуправляемый эквивалент Winapi?