初学MFC,小问个问题。

echozy 2005-12-23 02:55:42
看《深入浅出MFC》的第3章frame 1 范例程序遇到个问题。谢谢大家帮解决一下!
编译出现下面的问题
MY.OBJ : error LNK2001: unresolved external symbol "class CWinApp * __cdecl AfxGetApp(void)" (?AfxGetApp@@YAPAVCWinApp@@XZ)
不知道怎么回事了

代码如下
//MFC.H MFC.cpp MY.h MY.cpp

//------MFC.H-------
#include <iostream.h>

class CObject
{
public:
CObject::CObject() { cout<<"CObject Construtor \n"; }
CObject::~CObject(){ cout<<"CObject Destructor \n"; }

};
class CCmdTarget:public CObject
{
public:
CCmdTarget::CCmdTarget() { cout << "CCmdTarget Constructor \n"; }
CCmdTarget::~CCmdTarget(){ cout << "CCmdTarget Destructor \n"; }

};
class CWinThread : public CCmdTarget
{
public:
CWinThread::CWinThread() { cout << "CWinThread Constructor \n"; }
CWinThread::~CWinThread() { cout << "CWinThread Destructor \n"; }
};

class CWinApp : public CWinThread
{
public:
CWinApp* m_pCurrentWinApp;

public:
CWinApp::CWinApp() { m_pCurrentWinApp = this;cout << "CWinApp Constructor \n"; }
CWinApp::~CWinApp() { cout << "CWinApp Destructor \n"; }
};

class CDocument : public CCmdTarget
{
public:
CDocument::CDocument() { cout << "CDocument Constructor \n"; }
CDocument::~CDocument() { cout << "CDocument Destructor \n"; }
};


class CWnd : public CCmdTarget
{
public:
CWnd::CWnd() { cout << "CWnd Constructor \n"; }
CWnd::~CWnd() { cout << "CWnd Destructor \n"; }
};

class CFrameWnd : public CWnd
{
public:
CFrameWnd::CFrameWnd() { cout << "CFrameWnd Constructor \n"; }
CFrameWnd::~CFrameWnd() { cout << "CFrameWnd Destructor \n"; }
};

class CView : public CWnd
{
public:
CView::CView() { cout << "CView Constructor \n"; }
CView::~CView() { cout << "CView Destructor \n"; }
};


// global function

CWinApp* AfxGetApp();

//----------------------------------------------
//--------MFC.H-------
//--------function implement
#include "my.h" // 原本含入 mfc.h 就好,但為了 CMyWinApp 的定義,所以...

extern CMyWinApp theApp;

CWinApp* AfxGetApp()
{
return theApp.m_pCurrentWinApp;
}

//-----------------------------------------------
//--------MY.H-----------

#include <iostream.h>
#include "mfc.h"

class CMyWinApp : public CWinApp
{
public:
CMyWinApp::CMyWinApp() { cout << "CMyWinApp Constructor \n"; }
CMyWinApp::~CMyWinApp() { cout << "CMyWinApp Destructor \n"; }
};

class CMyFrameWnd : public CFrameWnd
{
public:
CMyFrameWnd() { cout << "CMyFrameWnd Constructor \n"; }
~CMyFrameWnd() { cout << "CMyFrameWnd Destructor \n"; }
};
//---------------------------------
//---------MY.CPP

#include "my.h"

CMyWinApp theApp; // global object

void main()
{
CWinApp* pApp = AfxGetApp();
}
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seu_why 2005-12-23
  • 打赏
  • 举报
回复
jf
echozy 2005-12-23
  • 打赏
  • 举报
回复
^O^,呵呵。重编译了一次,没事了,奇怪!
HelloIvan2005 2005-12-23
  • 打赏
  • 举报
回复
按你的代码, 我运行了没有什么问题啊。

16,551

社区成员

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

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

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