4日:
查看项目链接库的详细信息。
在链接的其它选择项中设置 “/verbose:lib ”,就可以看到链接时搜索库的顺序,可以判断出函数重复的细节。
5日:
关于strcat_s(char *
strDestination, size_t
numberOfElements, const char *
strSource)的误区。
numberOfElements,表示strDestination缓冲区空间大小,而不是指可以放下strSource区的大小。
关于strcpy_s(char *pdest, size_t destSize, char *src) 在src的字串长度大于destsize时也会报错。
9日:
关于
CMultiDocTemplate->CreateNewFrame失败。
在工程中要新增一种视图,添加MFC类分别继承于
CMDIChildWndEx和CView类,但是在调用上述方法打开窗口时失败。经过跟踪来到CDocTemplate::CreateNewFrame方法,
CFrameWnd* pFrame = (CFrameWnd*)m_pFrameClass->CreateObject();
if (pFrame == NULL)
{
TRACE(traceAppMsg, 0, "Warning: Dynamic create of frame %hs failed.\n",
m_pFrameClass->m_lpszClassName);
return NULL;
}
提示动态创建框架失败,打新建的CMDIChildWndEx子类,其中的宏为DECLARE_DYNAMIC把它改为DECLARE_DYNCREATE方式。再运行程序一切就可以了。
22日:
_DllMain重定义问题(托管与非托管共存)
一个混合的MFC程序,使用托管与非托管的MFC正规DLL在链接时出现了下如下链接的错误,错误 2 error LNK2005:
_DllMain@12 已经在
msvcrtd.lib(dllmain.obj) 中定 义 .......\mfcs100ud.lib(dllmodul.obj),于是在链接时指定mfcs1007d.lib优先,但是也无济无事。朋友发现
AFX_MANAGE_STATE(AfxGetStaticModuleState());仅只放在了托管的代码文件中,没有放到非托管的文件中。在非托管的文件中新建一个函数加入上面的语句,
再次编译就可以了。