【发布时间】: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() 错误。
【问题讨论】:
-
你真的需要
DECLARE_DYNAMIC宏吗?如果是,那么您在DlgGapWindowcpp 文件中是否有IMPLEMENT_DYNAMIC的等效实现?有关DECLARE_DYNAMIC的信息,请参见此处:msdn.microsoft.com/en-us/library/ywz9k63y%28VS.80%29.aspx
标签: c++ visual-studio-2008 mfc linker