MyClass :: GetMessageMap()和MyClass :: GetRuntimeClass(MSVC 2008)的MFC dlg类链接错误

时间:2011-03-01 03:03:22

标签: c++ visual-studio-2008 mfc linker

我复制了dlg box类的现有标头(使用dlg类向导/ mfc向导创建)。在我将cpp文件添加到项目之前,一切似乎都没问题。现在我得到一些mfc魔术方法的奇怪链接错误:

  

错误LNK2001:未解析的外部   符号“public:virtual struct   CRuntimeClass * __thiscall   DlgGapWindow :: GetRuntimeClass(无效)常量   “   (?GetRuntimeClass @ DlgGapWindow @@ UBEPAUCRuntimeClass @@ XZ)

     

错误LNK2001:未解析的外部   符号“protected:virtual struct   AFX_MSGMAP const * __thiscall   DlgGapWindow :: GetMessageMap(无效)常量   “   (?GetMessageMap @ @@ DlgGapWindow @@ MBEPBUAFX_MSGMAP XZ)

为什么会这样?

以下是标题

中的相关代码
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()

};

我似乎没有看到任何类似于我建模的东西。我没有发现谷歌或其他搜索有用的东西,以表明为什么这些神奇的mfc缺失。我的其他类没有明确定义它们,也没有错误。

RC文件确实有相应的dlg定义。

编辑:

感谢DECLARE_DYNAMIC帮助 - 现在我没有GetRuntimClass()错误 - 只是GetMessagemap()错误。

2 个答案:

答案 0 :(得分:15)

您使用了DECLARE_DYNAMIC但忘记了IMPLEMENT_DYNAMIC

答案 1 :(得分:0)

糟糕

我忘记了BEGIN_MESSAGE_MAP。

感谢您的帮助