1. 程式人生 > >MFC(1):第一個MFC程式建立及遇見的問題解決

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.