GetModuleFileName没有给出DLL的正确路径

问题描述

我使用两个目录来运行应用程序,将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);

它对我有用:

enter image description here