dll之loadbitmap失败 getlasterror返回1813 1814的解决
来源:互联网 发布:阿里云api怎么使用教程 编辑:程序博客网 时间:2024/05/20 18:51
最近用DLL做单纯的资源供给部件遇到了LoadBitmap失败的问题(返回1813,1814),经过不懈的努力总算搞清楚是怎么回事了。
问题的生产:
我把一个dLL(zy.dll)装进了一张位图(IDB_BITMAP1)和一个图标(IDI_ICON1),然后通过程序DllzyTest来调用。调试运行不
成功,返回1813和1814。
下面是1813和1814的意义:
1813:找不到映像文件中指定的资源类型
1814:找不到映像文件中指定的资源名
在网上找了好多文章这两个错误的解决都写得不清楚,后来仔细排查发现了生产错误的原因了,是因为资源DLL建立时位图资源和图标
的定义和资源调用程序里的位图资源和图标资源的定义不一样造成的。
问题的生产:
我把一个dLL(zy.dll)装进了一张位图(IDB_BITMAP1)和一个图标(IDI_ICON1),然后通过程序DllzyTest来调用。调试运行不
成功,返回1813和1814。
下面是1813和1814的意义:
1813:找不到映像文件中指定的资源类型
1814:找不到映像文件中指定的资源名
在网上找了好多文章这两个错误的解决都写得不清楚,后来仔细排查发现了生产错误的原因了,是因为资源DLL建立时位图资源和图标
的定义和资源调用程序里的位图资源和图标资源的定义不一样造成的。
看下图,我zy.dll的IDB_BITMAP1和IDI_ICON1的定义是(打开zy.dll的Resource.h查看):
看下图,而我的DllzyTest对IDB_BITMAP1和IDI_ICON1的定义是(打开DllzyTest的Resource.h查看):
同样的IDB_BITMAP1,一个定义成了4002,另一个定义了6002,这样在程序调用DLL资源就生产了1814:找不到映像文件中
指定的资源名。
而当IDI_ICON1的调用定义值被定义成了资源Dll里IDB_BITMAP1的值就会生产1813:找不到映像文件中指定的资源类型
问题的解决方法:
把资源Dll里的资源定义的名称和值与调用程序里的资源定义统一成一样的就可以了
这一问题找了近20个小时才发现原来是这么回事,惨啊,呵呵
0 0
- dll之loadbitmap失败 getlasterror返回1813 1814的解决
- MFC 外部DLL调用LoadBitmap失败的解决办法
- LoadLibrary失败,getlasterror返回126的心得
- UpdateLayeredWindow()失败,GetLastError()返回0
- Creat 失败,getlasterror返回10093
- CreateBitmapIndirect() GetLastError() 返回 错误的参数 创建失败原因
- GetLastError的返回值
- OpenProcess调用失败,GetLastError返回5
- Windows 的GetLastError()函数返回值之含义
- GetLastError返回代码的含义
- GetLastError返回代码的含义
- GetLastError返回值的意义
- GetLastError()返回消息的显示!
- GetLastError()返回值的意义
- GetLastError返回值的意义
- GetLastError()返回值的意义
- GetLastError返回代码的定义
- GetLastError()返回值的意义
- 陈怡暖:系列美国经济数据出炉,该如何面对?
- ftp 被动模式 防火墙问题
- Protocbuf使用和安装
- Android 版本升级(APK下载和安装)
- 欢迎使用CSDN-markdown编辑器
- dll之loadbitmap失败 getlasterror返回1813 1814的解决
- Unable to execute dex: Multiple dex files define 解决方法
- JSF集成Facelets使用经验总结
- android运行root命令
- Python-Scrapy 个人兴趣教程(三):扫尾
- 实现 MyEclipse 绿色版
- WANemv搭建网络模拟环境
- Android 4.3 隐藏功能 App Ops 分析
- 海量数据处理---simhash算法