A23*_*577 2 c++ windows dll winapi visual-studio-2010
我试图在我的代码中加载一个DLL在Windows中,我用LoadLibrary()函数成功加载我的DLL但我有一个问题,我给我的dll的路径像:
LoadLibrary(C:\\path\\to\\my\\dll);
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以给出我的dll的相对路径.我的意思是例如:
LoadLibrary(.\my dll directory\my dll.dll)
Run Code Online (Sandbox Code Playgroud)
可能吗?如果没有,我如何开发我的项目,它可以移植而不改变不同机器中的DLL的路径?
sel*_*bie 10
它很可能失败,因为你在第二次调用LoadLibrary时忘了逃避反斜杠.写问题时,这可能是一个错字,因为你也忘记了文件名的引号.;)也就是说,改变这一行:
LoadLibrary(.\my dll directory\my dll.dll);
Run Code Online (Sandbox Code Playgroud)
为此:
LoadLibrary(L".\\my dll directory\\my dll.dll");
Run Code Online (Sandbox Code Playgroud)
(而且我不确定是否.\\需要领先)
如果这不能解决问题,那么这很可能会满足您的需求:
wchar_t szFullPath[MAX_PATH] = {};
GetCurrentDirectory(MAX_PATH, szFullPath);
PathCchAppend(szFullPath, MAX_PATH, L"my dll directory\\my dll.dll");
HMODULE hDLL = LoadLibrary(szFullPath);
Run Code Online (Sandbox Code Playgroud)
最后,LoadLibrary具有不同的搜索依赖DLL的行为.它根据您指定路径的方式而有所不同.这可能会影响您从相对搜索路径加载DLL的能力.阅读它上面的MSDN页面并考虑查看各种选项调用,如LoadLibraryEx和SetDllDirectory可以使搜索路径更容易处理.这个页面也在DLL搜索路径上.