在鏈接LNK2001錯誤的proccess情況:如何擺脫mfc鏈接錯誤?
- LNK2001:無法解析的外部符號 「市民:虛擬結構的CRuntimeClass * __thiscall CChildView :: GetRuntimeClass(無效)常量」?(GetRuntimeClass @ CChildView @@ UBEPAUCRuntimeClass @@ XZ)
這是爲什麼?
這裏是頭中的相關代碼:
class CChildView :public CDialog
{
DECLARE_DYNAMIC(CChildView)
public:
CChildView();
~CChildView();
afx_msg void OnPaint();
afx_msg void OnLevelProf();
afx_msg void OnLevelAmat();
afx_msg void OnLevelBeg();
afx_msg void OnStepC();
void new_game();
//void CloseWindow();
BOOL PreCreateWindow(CREATESTRUCT& cs);
int end_analyze();
void ii();
unsigned long calculate(int id, int x, int y);
afx_msg void OnNewGame();
//void Invalidate();
afx_msg void OnX1010();
afx_msg void OnX1919();
afx_msg void OnX3030();
afx_msg void OnX5050();
afx_msg void OnX100100();
//MessageBoxW();
void resize_window();
afx_msg void OnLButtonDown(UINT, CPoint xy);
//void GetWindowRect(RECT);
//int MessageBoxW();
void OnStepH();
void set_chеcked_menu(unsigned int old_id, unsigned int new_id);
DECLARE_MESSAGE_MAP()
};
和.cpp文件的一部分:
//IMPLEMENT_DYNAMIC(CChildView, CWnd)//!without this - doesn`t compiles. With - //runtime failure
BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
.....
END_MESSAGE_MAP()
但我PROGRAMM的執行過程中(如果implement_dynamicaly是取消註釋)失敗在線上的AfxWinMain函數:
if (!pThread->InitInstance())
我的其他類沒有明確定義他們和他們沒有錯誤。 這是一個這樣的想法,但它並沒有幫助我。 MFC dlg class link errors for MyClass::GetMessageMap() and MyClass::GetRuntimeClass (MSVC 2008)
由於您使用'DECLARE_DYNAMIC',因此您需要'IMPLEMENT_DYNAMIC'。你的問題不是關於鏈接。這是關於程序的運行時行爲,並且您沒有提供有關該信息的信息。啓動您的調試器。找出發生了什麼事。 –
你從'CDialog'開車。但是你在'IMPLEMENT_DYNAMIC'和'BEGIN_MESSAGE_MAP'中切換到'CWnd'。從你的聲明的外觀來看,我不知道這是否是CDialog或CWnd或CView。暫時註釋'DECLARE_DYNAMIC'。你也應該大致解釋你是在什麼樣的視圖模型之後(對話框或多文檔視圖或單文檔...) –