VS2015 LoadLibrary加载DLL失败的解决方案,GetLastError()返回值193

遇到的问题

代码如下

void *p=NULL;
p=LoadLibrary("***.dll");

通过单步调试发现,p的值始终为0X00000000,即LoadLibrary调用失败
查了很多资料,将总结以及我的解决方案记录如下


  • 检查路径是否正确。我用的是相对路径,相对路径需要把该dll文件放在程序生成的exe文件目录下(也就是VS中 项目->属性->(配置属性)常规->输出目录),然后由于字符格式问题,可以写成这样p=LoadLibrary(TEXT("***.dll"));TEXT宏可以消除格式问题。
  • DLL的一致性问题。也就是exe版本必须要和dll版本在debug/release上是一致的,x64或者win32可能也需要保持一致。我是用的release x64版本。
  • 如果还没有解决问题,采用GetLastError()函数获取错误消息,GetLastError()函数是获取上一个发生错误的结果的api,所以要在LoadLibrary下一行接着调用
void *p=NULL;
p=LoadLibrary("***.dll");
DWORD error_id=GetLastError();
  • 通过打印或者在单步调试中查看error_id的值,然后搜索相应解决办法。我的返回值是193,主要问题是我加载的这个dll还关联着其他的dll,所以我将需要用到的dll都放在了exe程序的目录下就成功运行了。

猜你喜欢

转载自blog.csdn.net/gcola007/article/details/80079092