Ошибки связи класса MFC dlg для MyClass :: GetMessageMap () и MyClass :: GetRuntimeClass (MSVC 2008) - PullRequest
7 голосов
/ 01 марта 2011

Я скопировал существующий заголовок для класса dlg box (созданного с помощью мастера классов dlg / mfc wizard).Казалось, что все прошло нормально, пока я не добавил файл cpp в проект.Теперь я получаю странные ошибки ссылок для некоторых магических методов MFC:

ошибка LNK2001: неразрешенный внешний символ "public: virtual struct CRuntimeClass * __thiscall DlgGapWindow :: GetRuntimeClass (void) const" (? GetRuntimeClass @ DlgGapWindow @@ UBEPAUCRuntimeClass @@ XZ)

ошибка LNK2001: неразрешенный внешний символ "защищен: виртуальная структура AFX_MSGMAP const * __thiscall DlgGapWindow :: GetMessageMap (void) const" (? GetMessageMap @ DlgGapWMU @F_ @ @ X @ MB_X_EP_F @ @X_EP_F @ @X_EP_MB*

С чего бы это?

Вот соответствующий код в заголовке

class DlgGapWindow : public CDialog
{
    DECLARE_DYNAMIC(DlgGapWindow)

public:

    DlgGapWindow(CWnd* pParent = NULL);

    virtual ~DlgGapWindow();
    virtual BOOL PreTranslateMessage(MSG* pMsg);


protected:  
    virtual BOOL OnInitDialog();
    enum { IDD = IDD_DIALOG_GAP_VIEW };// Dialog Data

    GapViewer m_chart;  

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

    afx_msg void OnSize(UINT nType, int cx, int cy); 
    afx_msg void OnSizing(UINT fwSide, LPRECT pRect) ;
    afx_msg void OnTimer(ONTIMER_TYPE nIDEvent);
    afx_msg void OnDestroy();
    afx_msg void OnClose();
    afx_msg void OnActivate(UINT,CWnd *,BOOL);
    afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);

    DECLARE_MESSAGE_MAP()

};

Я не вижу ничего из класса, который я смоделировал, после этого кажетсябыть пропущенным.Я не нашел ничего полезного в Google или других поисков, чтобы указать, почему эти магические вещи отсутствуют.Мои другие классы не определяют их явно, и в них нет ошибок.

RC-файл имеет соответствующее определение dlg.

EDIT:

Спасибо за помощь DECLARE_DYNAMIC - теперь у меня нет ошибки GetRuntimClass () - только GetMessagemap() ошибка.

Ответы [ 2 ]

15 голосов
/ 01 марта 2011

Вы использовали DECLARE_DYNAMIC, но забыли IMPLEMENT_DYNAMIC .

0 голосов
/ 01 марта 2011

Упс

Я забыл BEGIN_MESSAGE_MAP.

Спасибо за помощь

...