初学MFC,小问个问题。
看《深入浅出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();
}