遇到的问题
代码如下
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程序的目录下就成功运行了。