我试图从另一个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搜索顺序 。 这将在可执行文件的目录中查找,但不会搜索加载的任何DLLS的目录。 因此找不到DLL。
你有很多选择:
除非您需要在不同的应用程序之间共享DLLS,否则选项1总是首选。 这使得您可以很容易地确定您加载的DLL是正确的。 这是因为可执行文件目录总是先搜索。
你需要知道的一切都在这里: 动态链接库搜索顺序 。
考虑使用SetDllDirectory将您的DLL路径添加到LoadLibrary搜索路径。