如下图所示,
编译的环境是:VS2008 SP1
使用静态MFC+BCGControlBar12静态Debug库,使用动态链接库时,问题并不存在。
这说明和使用静态库有关,原来静态库中默认是没有包含相关的资源的,MY GOD!!
跟踪调试,发现烦人的错误是提示是因为:
#define IDB_BCGBARRES_RIBBON_PRINT_LARGE 17089
#define IDB_BCGBARRES_RIBBON_PRINT_SMALL 17090
这两个资源定义在BCGCBPro.rc中,这两个资源不能被正确的加载。
知道问题的原因,剩下来就是解决办法,在尝试过程中,使用过以下几种办法
方法一:在自己的工程中增加这两个ID的图片,将原图片从BCGControlBar中拷贝过来;经测试方法可行,但不爽。
方法二:将BCGCBPro.rc文件加到本工程中来,参考:
但加进来后会报:
1>CVTRES : fatal error CVT1100: duplicate resource. type:STRING, name:3841, language:0x0409
1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
暂时不太可行,提示信息不明确,不易解决。
方法三:在网上搜索方法,结果找到这篇文章,貌似可以解决问题:
http://blog.163.com/long_lh/blog/static/27693480200792211541503/
捣咕了半天,没结果,仍然报错。虽然思路是对的,但Resource Includes对话框老是改我的Resouces.h文件,非常危险!!
最终方案:
打开项目的rc文件,在最后面有一段#include,
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#pragma code_page(936)
#include "res/RibbonDemo.rc2" // non-Microsoft Visual C++ edited resources
#include "afxres.rc" // Standard components
#include "afxprint.rc" // printing/print preview resources
#include "BCGCBPro.rc" // BCGControlBarPro resources/r/n [新加内容]
#endif
/
#endif // not APSTUDIO_INVOKED