今天看了一下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介面開發的同學會接觸到這種程式 像下面這個程式大家學過...