我最近在调试一个dll时,出现了一个莫名的断言错误,就是在主程序中创建由MFC 扩展DLL导出的一个控件(该控件继承自CWnd类)时,一调用Create()函数就出现下面的的断言错误:
调试跟进去:
file:afxwin1.inl
line:21
发现是下面的断言语句报错:
_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
{
ASSERT(afxCurrentResourceHandle != NULL);//这里出错!
return afxCurrentResourceHandle;
}
费了很大的周折才解决,其实就是犯了一个很低级的错误,dll的字符集不匹配,mfc dll的字符集为UNICODE,但 我调用Create()函数时传进去的窗口名为ansi字符集,所以不匹配!