【问题标题】:MFC dlg class link errors for MyClass::GetMessageMap() and MyClass::GetRuntimeClass (MSVC 2008)MyClass::GetMessageMap() 和 MyClass::GetRuntimeClass (MSVC 2008) 的 MFC dlg 类链接错误
【发布时间】:2011-03-01 03:03:22
【问题描述】:

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

错误 LNK2001:未解决的外部 符号“公共:虚拟结构 CRuntimeClass * __thiscall DlgGapWindow::GetRuntimeClass(void)const " (?GetRuntimeClass@DlgGapWindow@@UBEPAUCRuntimeClass@@XZ)

错误 LNK2001:未解决的外部 符号“受保护:虚拟结构 AFX_MSGMAP 常量 * __thiscall DlgGapWindow::GetMessageMap(void)const " (?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() 错误。

【问题讨论】:

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


【解决方案1】:

您使用了 DECLARE_DYNAMIC,但忘记了 IMPLEMENT_DYNAMIC

【讨论】:

  • 太好了 - 谢谢。这解决了 GetRuntimeClass() 但我仍然有 GetMessageMap() 链接错误。
  • 同样的事情,没有 BEGIN/END_MESSAGE_MAP。
【解决方案2】:

哎呀

我忘记了 BEGIN_MESSAGE_MAP。

感谢您的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    相关资源
    最近更新 更多