【发布时间】:2012-02-11 16:47:31
【问题描述】:
我的应用程序使用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?
【问题讨论】:
标签: c++ windows unit-testing dll directory