dll之loadbitmap失败 getlasterror返回1813 1814的解决
2015-05-26 14:56
148 查看
最近用DLL做单纯的资源供给部件遇到了LoadBitmap失败的问题(返回1813,1814),经过不懈的努力总算搞清楚是怎么回事了。
问题的生产:
我把一个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个小时才发现原来是这么回事,惨啊,呵呵
问题的生产:
我把一个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个小时才发现原来是这么回事,惨啊,呵呵
相关文章推荐
- 如何解决加载动态链接库DLL失败,返回0,GetLastError返回错误码126
- WIN7上UpdateLayeredWindow执行失败,getlasterror返回307的问题解决方法
- GDI+ / PNG 实现半透明窗口,正常情况下没有问题 将系统设置为16位色后UpdateLayeredWindow函数失败,GetLastError返回8(ERROR_NOT_ENOUGH_MEMORY)
- openProcess时拒绝访问(GetlastError为5),返回的HANDLE为NULL的解决方法
- CreateBitmapIndirect() GetLastError() 返回 错误的参数 创建失败原因
- LoadLibrary失败,getlasterror返回126的心得
- 在xp下加载正常的dll,在win7下loadlibrary失败,返回错误值998(ERROR_NOACCESS)的解决办法
- 打开虚拟串口COM18失败,GetLastError返回2
- win7下使用共享内存方式CreateFileMapping返回GetLastError总是0x5的问题解决
- 解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
- 打开虚拟串口COM18失败,GetLastError返回2
- Creat 失败,getlasterror返回10093
- TransactNamedPipe函数在切换线程时失败,GetLastError 返回 231。 再次 Read 成功。
- CreateDirectory(…)执行失败,GetLastError()返回错误码5
- 解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
- [转]在xp下加载正常的dll,在win7下loadlibrary失败,返回错误值998(ERROR_NOACCESS)的解决办法
- LoadLibrary(Ex)失败,GetLastError返回127 (找不到指定的程序)
- 关于UpdateLayeredWindow调用失败返回0但是Getlasterror为0的问题
- LoadLIbrary 失败GetLasterror 返回127 126
- LoadLibrary(Ex)失败,GetLastError返回127 (找不到指定的程序)