MFC(1):第一個MFC程式建立及遇見的問題解決
1 專案建立及程式碼編寫
(1)建立一個win32空專案,建立完成後,右鍵屬性-->專案預設值-->MFC的使用-->在共享 DLL 中使用 MFC-->確定
(2)編寫標頭檔案mfc.h
#include <afxwin.h>
class CMyApp : public CWinApp
{
public:
//MFC程式的入口函式
//基類的函式,子類繼承重寫
virtual BOOL InitInstance();
};
class CMyFrame : public CFrameWnd
{
public:
CMyFrame();
};
(3)建立原始檔mfc.cpp
#include "mfc.h"
//建立唯一的應用程式物件
CMyApp app;
BOOL CMyApp::InitInstance()
{
//建立框架類物件
CMyFrame* myFrame = new CMyFrame;
myFrame->ShowWindow(SW_SHOWNORMAL);
myFrame->UpdateWindow();
m_pMainWnd = myFrame;
return TRUE;
}
CMyFrame::CMyFrame()
{
Create(NULL, TEXT("MyWindow"));
}
2 遇到問題及解決辦法
(1)IntelliSense: #error 指令: Please use the /MD switch for _AFXDLL builds
解決辦法:
工程(Project)-> 屬性(Properties)-> 配置屬性(Configuration Properties)-> c/c++->
程式碼生成(Code Generation)->執行庫(Use run-time library)->多執行緒除錯DLL(/MD)
(2) LNK4098: 預設庫“MSVCRT”與其他庫的使用衝突;請使用 /NODEFAULTLIB:library
方案一:【專案】->【屬性】->【配置屬性】->【聯結器】->【輸入】->【忽略指定庫】,輸入:msvcrt.lib
方案二:【專案】->【屬性】->【配置屬性】->【聯結器】->【命令列】,輸入:/NODEFAULTLIB:msvcrt.lib
3 使用win32控制檯建立mfc專案時遇到的問題分析
errorLNK2019: 無法解析的外部符號 [email protected],該符號在函式 ___tmainCRTStartup 中被引用
因為控制檯應用程式的入口(main)與Win32程式的入口(WinMain)是不一致,因此導致該錯誤。
解決方法:
【專案】->【屬性】->【配置屬性】-> C/C++ ->前處理器 -> 前處理器定義 ,設定為WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);
【專案】->【屬性】->【配置屬性】-> 【聯結器】 -> 【系統】 -> 【子系統】的/subsystem:console改為/subsystem:windows.