MFC程序实现+ cl.exe,linker.exe编译工具
vc2015下基础MFC程序的实现
-
MFC程序的创建
文件新建,选择项目,点击MFC应用程序以后命名名字并选择存储地方
点击下一步
选择单个文档,点击完成即可
-
程序的实现
由于MFC自带源代码,所以创建好项目以后就可以生成一个空白窗口
添加一点代码,即可输出文字
// CMFC1View 绘制
void CMFC1View::OnDraw(CDC* pDC)
{
CMFC1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 此处为本机数据添加绘制代码
CString str(_T("Hello World !"));
pDC->TextOutW(220, 250, str);
}
调试程序,得到运行结果
- 程序的分析
CMFC1App 应用程序类
class CMFC1App : public CWinApp
{
public:
CMFC1App();
// 重写
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
// 实现
UINT m_nAppLook;
afx_msg void OnAppAbout();
DECLARE_MESSAGE_MAP()
};
窗口类
class CMainFrame : public CFrameWnd
{
protected: // 仅从序列化创建
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// 特性
public:
// 操作
public:
// 重写
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
// 实现
public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected: // 控件条嵌入成员
CToolBar m_wndToolBar;
CStatusBar m_wndStatusBar;
// 生成的消息映射函数
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnApplicationLook(UINT id);
afx_msg void OnUpdateApplicationLook(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()
};
cl.exe和linker.exe编译工具
-
cl.exe
电脑终端切换到目录所在文件夹,输入cl.exe /c app1.c
同时目录下生成后缀为.obj的文件
-
link.exe
link + 文件名.obj +库名
所在目录下同时生成.exe文件
同理,编译上文MFC文件,
总结
link时遇到问题很多,例如" fatal error lnk 2019"系列问题和“fatal error lnk 1561:必须定义入口点。”,前者的解决方法,后者参考了同学的解决方法…