Tôi đã sao chép tiêu đề hiện có của lớp hộp dlg (được tạo bằng trình hướng dẫn lớp dlg/trình hướng dẫn mfc). Mọi thứ có vẻ ổn cho đến khi tôi thêm tệp cpp vào dự án. Bây giờ tôi đang gặp một số lỗi liên kết kỳ lạ với các phương pháp ma thuật mfc:
lỗi LNK2001: ký hiệu bên ngoài chưa được giải quyết "công khai: cấu trúc ảo CRuntimeClass * __thiscall DlgGapWindow::GetRuntimeClass(void)const " (?GetRuntimeClass@DlgGapWindow@@UBEPAUCRuntimeClass@@XZ)
lỗi LNK2001: ký hiệu bên ngoài chưa được giải quyết "được bảo vệ: cấu trúc ảo AFX_MSGMAP const * __thiscall DlgGapWindow::GetMessageMap(void)const " (?GetMessageMap@DlgGapWindow@@MBEPBUAFX_MSGMAP@@XZ)
为什么会这样?
Đây là mã có liên quan trong tiêu đề
lớp DlgGapWindow : CDialog công khai
{
DECLARE_DYNAMIC(DlgGapWindow)
public:
DlgGapWindow(CWnd* pParent = NULL);
ảo ~DlgGapWindow();
BOOL ảo PreTranslateMessage(MSG* pMsg);
protected:
BOOL ảo OnInitDialog();
enum { IDD = IDD_DIALOG_GAP_VIEW };// Dữ liệu hộp thoại
GapViewer m_chart;
protected:
khoảng trống ảo DoDataExchange(CDataExchange* pDX); // hỗ trợ DDX/DDV
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, điểm CPoint);
afx_msg void OnLButtonDblClk(UINT nFlags, điểm CPoint);
DECLARE_MESSAGE_MAP()
};
Tôi không thấy bất cứ điều gì trong lớp mà tôi đã lập mô hình dường như bị thiếu. Tôi chưa tìm thấy bất kỳ tìm kiếm hữu ích nào trên Google hoặc các tìm kiếm khác về lý do tại sao nội dung mfc kỳ diệu này lại bị thiếu. Các lớp khác của tôi không định nghĩa chúng một cách rõ ràng và chúng không có lỗi.
Các tệp RC có định nghĩa dlg tương ứng.
biên tập:
Cảm ơn DECLARE_DYNAMIC đã trợ giúp - hiện tại tôi không gặp lỗi GetRuntimClass() - chỉ có lỗi GetMessagemap().
Tôi là một lập trình viên xuất sắc, rất giỏi!