LoadLibrary返回NULL,GetLastError返回998

在使用LoadLibrary装载某个dll的时候返回NULL,然后调用GetLastError返回998,意思是说“内存位置访问无效。”,问题很奇怪,因为前一段时间还能正确加载,网上搜索也是说什么的都有,最后调查发现是由于LoadLibrary是在应用程序全局变量初始化的时候调用的,如果LoadLibrary放到应用程序初始化完成后就不会出现这个问题(或者在主窗体构造时),看样子这个动态库不能装载过早,可能是由于其他系统依赖库还没有加载造成的(比如LoadLibrary函数所在的库)。


2017年9月5号最新进展(备注:c++builder的exe调用VC++ dll):

LoadLibrary中的参数使用变量时,不会出现此问题,或者使用LoadLibraryA和LoadLibraryW也不会出现此问题,比如:

String dllName = "decoder.dll";

hDll = LoadLibrary(dllName.c_str());//ok

hDll = LoadLibraryA("decoder.dll");//ok

hDll = LoadLibraryW(L"decoder.dll");//ok

//hDll = LoadLibrary(_T("decoder.dll"));//fail

最后定位到一个其他函数中的一个数组初始化会影响到LoadLibrary函数返回值,

char szHead[5] = {0};

C++ builder 太奇怪了,或者还没有找到真正的原因!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值