如何編譯MFC程式

2021-04-21 06:56:19 字數 2259 閱讀 4902

今天看了一下mfc,但是在vs2008下面怎麼都不能編譯書中給出的例子。書中的例子如下,是乙個很原始和基本的mfc程式。

;class cmainwindow : public cframewnd

;

#include #include "hello.h"//

// cmainwindow message map and member functions

begin_message_map (cmainwindow, cframewnd)

on_wm_paint ()

end_message_map ()

cmainwindow::cmainwindow ()

void cmainwindow::onpaint ()

unresolved external symbol _main referenced in function ___tmaincrtstartup

上網搜了一下發現有如下的解決方法**載自

vc中error lnk2001:unresolved external symbol _winmain@16的解決方法

一,問題描述

error lnk2001: unresolved external symbol _winmain@16

debug/main.exe:fatal error lnk 1120:1 unresolved externals

error executing link.exe;

二,產生這個問題可能的原因

1, 你用vc建了乙個控制台程式,它的入口函式應該是main, 而你使用了winmain.

2.  你用vc開啟了乙個.c/.cpp 檔案,然後直接編譯這個檔案,這個檔案中使用了winmian而不是main作為入口函式。vc這時的預設設定是針對控制台程式的。

三, 解決方法

1.進入project->setting->c/c++, 在category中選擇preprocessor,在processor definitions中刪除_console, 新增_windows

2.進入project->setting->link, 在project options中將 /subsystem:console改為/subsystem:windows.

3.儲存設定,rebuild all.

vs2005中的設定請參考對應項進行設定

四,vs2005中的設定

1.選單中選擇 project->properties, 彈出property pages視窗

2.在左邊欄中依次選擇:configuration properties->c/c++->preprocessor,然後在右邊欄的preprocessor definitions對應的項中刪除_console, 新增_windows.

3.在左邊欄中依次選擇:configuration properties->linker->system,然後在右邊欄的subsystem對應的項改為windows(/subsystem:windows)

4.rebuild all. ok ?

測試:(環境:vs2005,程式語言vc)

// test.c

#i nclude

int apientry winmain(hinstance hinstance,

hinstance hprevinstance,

lpstr     lpcmdline,

int       ncmdshow)

假設把檔案包存為test.c.

3.vs2005建立的工程預設是支援unicode的,我不用這個,所以在選單中選擇 project->properties, 彈出property pages視窗。在左邊欄中依次選擇:configuration properties->general,然後把右邊欄的character set 改為use multi-byte character set.

4.編譯,出現如下錯誤:

msvcrtd.lib(crtexe.obj) : error lnk2019: unresolved external symbol _main referenced in function ___tmaincrtstartup

c:/test/debug/test.exe : fatal error lnk1120: 1 unresolved externals

5.按照上述vs2005中的設定方法進行設定,然後再編譯,錯誤消失了吧! 

(update:2006-10-28新增第四部分)

如何看MFC程式

一直以來 我都乙個疑惑 如果看懂別人的mfc 程式。今日忽然略有小悟。q mfc是啥?a mfc是類庫。q mfc 啥玩意類庫?a mfc 是封裝api的類庫 q mfc的導火索是啥?以上是背景資訊。所以看懂程式第一步 熟悉mfc類的架構 mfc家族的七大姑八大姨 要門清,誰是誰的兒子 誰的誰的孫子...

NMake命令方式編譯MFC程式

編譯環境 visual c 6.0 命令工具 nmake cl link 程式功能 使用mfc方式建立乙個對話方塊.從網路下visual c 6.0 綠色版或者安裝版,安裝完成後,目錄 vc98 bin下應該有nmake程式,cl程式和link程式 採用mfc構建乙個簡單的對話方塊.首先使用visu...

如何區分控制台程式和MFC程式

vc 6.0軟體也稱為vc,既可以寫c語言程式,也可以寫c 程式,同時既可以開發控制台程式,又可以開發mfc程式。但是很多同學不知道什麼叫做控制台程式,什麼是mfc程式。像下面這種windows視窗風格的程式叫做mfc程式,一般學過windows介面開發的同學會接觸到這種程式 像下面這個程式大家學過...