В proccess увязывания ошибка LNK2001 происходит:Как избавиться от ошибки связывания в mfc?
- LNK2001: неразрешенный внешний символ "общественности: виртуальная структура CRuntimeClass * __thiscall CChildView :: GetRuntimeClass (аннулируются) Const"? (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()
Но во время выполнения моей программы (если implement_dynamicaly является раскомментирован) он не в функции AfxWinMain на линии:
if (!pThread->InitInstance())
Мои другие классы явно не определяют их и у них нет ошибок. Вот что-то вроде этого, но он не помог мне. MFC dlg class link errors for MyClass::GetMessageMap() and MyClass::GetRuntimeClass (MSVC 2008)
Поскольку вы используете 'DECLARE_DYNAMIC', вам нужен' IMPLEMENT_DYNAMIC'. Ваш вопрос не о связи. Это касается поведения вашей программы во время выполнения, и вы не предоставили информацию об этом. Запустите свой отладчик. Узнайте, что происходит. –
Вы едете из 'CDialog'. Но затем вы переключаетесь на 'CWnd' в' IMPLEMENT_DYNAMIC' и в 'BEGIN_MESSAGE_MAP'. Из взгляда ваших заявлений я не знаю, должно ли это быть «CDialog» или «CWnd» или «CView». На данный момент комментируем 'DECLARE_DYNAMIC'. Также вы должны объяснить примерно, какую модель просмотра вы используете (диалог или просмотр нескольких документов или один документ ...) –