它很可能会失败,因为您在第二次调用 LoadLibrary 时忘记转义反斜杠。写你的问题时,也许这是一个错字,因为你也忘记了文件名的引号。;) 也就是说,改变这一行:
LoadLibrary(.\my dll directory\my dll.dll);
要这样:
LoadLibrary(L".\\my dll directory\\my dll.dll");
(而且我不确定是否.\\
需要领先)
如果那不能解决它,那么这很可能会满足您的需要:
wchar_t szFullPath[MAX_PATH] = {};
GetCurrentDirectory(MAX_PATH, szFullPath);
PathCchAppend(szFullPath, MAX_PATH, L"my dll directory\\my dll.dll");
HMODULE hDLL = LoadLibrary(szFullPath);
最后,LoadLibrary 具有不同的搜索依赖 DLL 的行为。它会根据您指定路径的方式而有所不同。这可能会影响您从相对搜索路径加载 DLL 的能力。阅读上面的 MSDN 页面,并考虑查看各种选项调用,例如LoadLibraryEx和SetDllDirectory可以使搜索路径更易于处理。这个页面也是关于 DLL 搜索路径的。