LoadLibrary失败,何故?
在我的程序中,调用我写的MyDll.dll,代码如下:
hMoudle = LoadLibrary("MyDll.dll");
if (hMoudle == NULL)
DWORD dwErr = GetLastError();
发现hMoudle返回NULL(说明加载dll失败),但GetLastError()返回的是0(说明没有错误),这是什么原因?dll放在exe当前目录下,应该不是路径的问题。
后来,我又在MyDll.dll工程中,以调试的方式运行(在dll源程序中设置断点,以调试的方式运行,在dll工程中设置运行的exe),发现:程序根本没有进入MyDll.dll中的DllMain(), 也就是说,连dll的入口都没进入。
我想,我的dll工程中中设置了一些相对路径,在编译选项中以:"..\..Else"形式写入相对路径,也就是说这个dll用到了工程目录的上一层的上一层的else文件夹中的.h文件以及lib,我想是不是和这个有关?但我用depends工具查看,发现mydll.dll没有缺少其它的库文件,请各位指教。
此外,如果把所有的.h和.lib所在文件夹全放入工程目录下(不使用..\..else这种形式),就可以正常加载。但是这没有道理啊。
hMoudle = LoadLibrary("MyDll.dll");
if (hMoudle == NULL)
DWORD dwErr = GetLastError();
发现hMoudle返回NULL(说明加载dll失败),但GetLastError()返回的是0(说明没有错误),这是什么原因?dll放在exe当前目录下,应该不是路径的问题。
后来,我又在MyDll.dll工程中,以调试的方式运行(在dll源程序中设置断点,以调试的方式运行,在dll工程中设置运行的exe),发现:程序根本没有进入MyDll.dll中的DllMain(), 也就是说,连dll的入口都没进入。
我想,我的dll工程中中设置了一些相对路径,在编译选项中以:"..\..Else"形式写入相对路径,也就是说这个dll用到了工程目录的上一层的上一层的else文件夹中的.h文件以及lib,我想是不是和这个有关?但我用depends工具查看,发现mydll.dll没有缺少其它的库文件,请各位指教。
此外,如果把所有的.h和.lib所在文件夹全放入工程目录下(不使用..\..else这种形式),就可以正常加载。但是这没有道理啊。
...全文
相关推荐
深入解析System.load 与 System.loadLibrary
`System.loadLibrary` `System.loadLibrary`方法则不同,它只需要库文件的基本名称,不包含扩展名,例如: ```java System.loadLibrary("TestJNI
new_test.zip_Getprocadress_LoadLibrary_get dress的用法
成功时,`GetProcAddress`返回函数的地址,失败则返回`NULL`。
loadlibrary:将Windows动态链接库移植到Linux
**错误处理** `LoadLibrary`返回NULL表示失败,而在Linux中,`dlopen`返回NULL或设置`errno`。
loadLibrary msc error:java.lang.UnsatisfiedLinkError:
"解决Java在Android环境下加载so库报错的问题"在Android开发中,有时我们会遇到需要使用C或C++编写的本地库(Native Library),这些库通常以`.so`文件的形式存在
安装招商银行个人专业失败解决方法
**错误提示解析**:在尝试安装招商银行个人专业版软件时,用户收到“loadlibrary ('PersonalBankMain.ocx')失败,-找不到指定的模块”的错误信息。


