4日:
查看項目鏈接庫的詳細信息。
在鏈接的其它選擇項中設(shè)置 “/verbose:lib ”,就可以看到鏈接時搜索庫的順序,可以判斷出函數(shù)重復(fù)的細節(jié)。
5日:
關(guān)于strcat_s(char *
strDestination, size_t
numberOfElements, const char *
strSource)的誤區(qū)。
numberOfElements,表示strDestination緩沖區(qū)空間大小,而不是指可以放下strSource區(qū)的大小。
關(guān)于strcpy_s(char *pdest, size_t destSize, char *src) 在src的字串長度大于destsize時也會報錯。
9日:
關(guān)于
CMultiDocTemplate->CreateNewFrame失敗。
在工程中要新增一種視圖,添加MFC類分別繼承于
CMDIChildWndEx和CView類,但是在調(diào)用上述方法打開窗口時失敗。經(jīng)過跟蹤來到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;
}
提示動態(tài)創(chuàng)建框架失敗,打新建的CMDIChildWndEx子類,其中的宏為DECLARE_DYNAMIC把它改為DECLARE_DYNCREATE方式。再運行程序一切就可以了。
22日:
_DllMain重定義問題(托管與非托管共存)
一個混合的MFC程序,使用托管與非托管的MFC正規(guī)DLL在鏈接時出現(xiàn)了下如下鏈接的錯誤,錯誤 2 error LNK2005:
_DllMain@12 已經(jīng)在
msvcrtd.lib(dllmain.obj) 中定 義 .......\mfcs100ud.lib(dllmodul.obj),于是在鏈接時指定mfcs1007d.lib優(yōu)先,但是也無濟無事。朋友發(fā)現(xiàn)
AFX_MANAGE_STATE(AfxGetStaticModuleState());僅只放在了托管的代碼文件中,沒有放到非托管的文件中。在非托管的文件中新建一個函數(shù)加入上面的語句,
再次編譯就可以了。