我正在尝试从另一个dll加载一个dll(通过LoadLibraryA)。 这就是问题所在:
c:\**EXE_DIR**\myExe.exe // this exe load the MY_DLL_N1.dll
c:\**DLLS_DIR**\MY_DLL_N1.dll // this dll load the MY_DLL_N2.dll
c:\**DLLS_DIR**\MY_DLL_N2.dll
int LoadMyDLL()
{
// ...
// same path of the MY_DLL_N1.dll ... right?
handle = LoadLibraryA ("MY_DLL_N2.dll");
// ...
}
这就是所有......欢迎任何帮助!
答案 0 :(得分:4)
您需要知道的所有内容都位于此处:Dynamic-Link Library Search Order。
考虑使用SetDllDirectory将DLL路径添加到LoadLibrary搜索路径。
答案 1 :(得分:1)
handle = LoadLibraryA ("MY_DLL_N2.dll");
由于您未提供路径,因此使用DLL search order。这将查看可执行文件的目录,但不会搜索任何已加载的DLLS的目录。因此无法找到DLL。
您有多种选择:
除非您需要在不同应用程序之间共享DLLS,否则始终首选选项1。这使您可以轻松确保加载的DLL是正确的。那是因为始终首先搜索可执行目录。