最近用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查看):