问题描述
我使用两个目录来运行应用程序,将EXE文件放在一个目录中,将DLLs放在另一个目录中。执行完EXE之后,我想在运行时加载另一个DLL,因此我使用GetmodulefileName()
获取工作的DLL路径,以从同一目录加载另一个DLL。但是,它返回的是可执行文件目录路径而不是DLL的路径,因此我无法加载另一个DLL。
解决方法
根据document:
已请求其路径的已加载模块的句柄。如果此参数为 NULL ,则 GetModuleFileName 会检索当前进程的可执行文件的路径。
因此,请确保您正确传递了DLL
的实例。
我创建了一个示例进行测试:
char result[MAX_PATH];
HMODULE hDLL = LoadLibrary("D:\\test\\Dll1.dll");
GetModuleFileNameA(hDLL,result,MAX_PATH);
它对我有用: