一个MFC程序编译通过,连接出错,送100分

jekor 2005-02-12 04:33:35
#include <afxwin.h>

//应用程序类
class CMyApp :public CWinApp
{
virtual BOOL InitInstance();
DECLARE_MESSAGE_MAP()
};

//MDI主框架类
class CMyFrame :public CMDIFrameWnd
{
protected:
DECLARE_DYNAMIC(CMyFrame)
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()
};

//MDI子框架类
class CChildFrame :public CMDIChildWnd
{
DECLARE_DYNAMIC(CChildFrame)
DECLARE_MESSAGE_MAP()
};

//文档类
class CMyDoc :public CDocument
{
DECLARE_DYNCREATE(CMyDoc)
virtual void Serialize(CArchive& ar);
DECLARE_MESSAGE_MAP()
};

//视图类
class CMyView :public CView
{
protected:
DECLARE_DYNCREATE(CMyView)
// CMyDoc* GetDocument();
public:
virtual void OnDraw(CDC* pDC);
DECLARE_MESSAGE_MAP()
};
CMyApp theApp;

BOOL CMyApp::InitInstance()
{
CMultiDocTemplate* pDocTemplate;
pDocTemplate=new CMultiDocTemplate(
NULL,RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(CMyView));
AddDocTemplate(pDocTemplate);
CMyFrame* pframe=new CMyFrame;
pframe->LoadFrame(NULL);
m_pMainWnd=pframe;
pframe->ShowWindow(m_nCmdShow);
pframe->UpdateWindow();
return TRUE;
}
IMPLEMENT_DYNAMIC(CMyFrame,CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMyFrame,CMDIFrameWnd)
END_MESSAGE_MAP()

IMPLEMENT_DYNAMIC(CChildFrame,CMDIChildWnd)
BEGIN_MESSAGE_MAP(CChildFrame,CMDIChildWnd)
END_MESSAGE_MAP()

IMPLEMENT_DYNCREATE(CMyDoc,CDocument)
BEGIN_MESSAGE_MAP(CMyDoc,CDocument)
END_MESSAGE_MAP()

void CMyDoc::Serialize(CArchive& ar)
{
//
}

IMPLEMENT_DYNCREATE(CMyView,CView)

BEGIN_MESSAGE_MAP(CMyView,CView)
END_MESSAGE_MAP()

void CMyView::OnDraw(CDC *pDC)
{
//
}



我用的是VC++6.0编译通过,但连接出错,错误输出:
Linking...
main.obj : error LNK2001: unresolved external symbol "protected: virtual struct AFX_MSGMAP const * __thiscall CMyApp::GetMessageMap(void)const " (?GetMessageMap@CMyApp@@MBEPBUAFX_MSGMAP@@XZ)
Debug/MFC_temp03.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

MFC_temp03.exe - 2 error(s), 0 warning(s)
------------------------------------------------------------------------
请问哪里出错了,(我已经设置连接库动态连接和多线程)
我想可能是工程项目的设置没有设好。
...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hiiiiiijiang 2005-02-13
  • 打赏
  • 举报
回复
点“管理”你就知道了
jekor 2005-02-13
  • 打赏
  • 举报
回复
怎么给分啊?有知道的回个帖。
fireflysduio 2005-02-12
  • 打赏
  • 举报
回复
在cmyapp.cpp文件中加入下列宏:

BEGIN_MESSAGE_MAP(CMyApp, CWinApp)

END_MESSAGE_MAP()
jekor 2005-02-12
  • 打赏
  • 举报
回复
这个MFC程序不是用向导生成的,自己写的看了侯sir的书上的例子。
现在不能运行,我都照书上每个字母都对照过了,还是不行。


100分求助。
subtop 2005-02-12
  • 打赏
  • 举报
回复
应该是没有定义"GetMessageMap()"
DECLARE_MESSAGE_MAP()宏声明了该函数,而相应的 BEGIN_MESSAGE_MAP()...
END_MESSAGE_MAP()配对宏定义了该函数,你看看每个类的头文件合实现文件
中是否分别有哦上述三个宏,重点检查一下你的MyApp.cpp.
fuzb 2005-02-12
  • 打赏
  • 举报
回复
从你的link错误信息来看应该是.h文件里域范围有问题,CMyApp::GetMessageMap(void)是DECLARE_MESSAGE_MAP()宏代表的函数,你应该是在app.h中改变了向导默认生成的public控制

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧