我正在尝试从另一个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");
// ...
}
仅此而已....欢迎任何帮助!
最佳答案
handle = LoadLibraryA ("MY_DLL_N2.dll");
因为不提供路径,所以使用DLL search order。这将在可执行文件的目录中查找,但不会在已加载的任何DLLS的目录中搜索。因此无法找到DLL。
您有多种选择:
除非您需要在不同应用程序之间共享DLLS,否则始终首选选项1。这使您很容易确定所加载的DLL是正确的。那是因为总是首先搜索可执行目录。