無法解析的外部符號 _WinMain@16,該符號在函數(shù)中被引用
無法解析的外部符號 _WinMain@16,該符號在函數(shù) ___tmainCRTStartup 中被引用
出現(xiàn)原因:
? ? ? ? 連接程序在負責連接可執(zhí)行程序時,選擇相應的c/c++運行時啟動函數(shù)。如果設定了/subsystem:windows連接程序開關,那么連接程序會試圖尋找WinMain或wWinMain函數(shù)。如果連個函數(shù)都不存在,那么就會返回一個“一個未解決的外部符號”(無法解析的外部符號 _main,該符號在函數(shù) ___tmainCRTStartup 中被引用)
? ? ? ?同樣,如果設定了/subsystem:console連接程序開關,那么連接程序就會試圖尋找main函數(shù)或者wmain函數(shù),如果找不到這連個函數(shù)是,連接程序返回unresolved externel symbol錯誤信息。
? ? ??一般情況下,如果是windows程序,那么WinMain是入口函數(shù),在VS2008中新建項目為“win32項目”如果是dos控制臺程序,那么main是入口函數(shù),在VS2008中新建項目為“win32控制臺應用程序”而如果入口函數(shù)指定不當,很顯然c語言運行時找不到配合函數(shù),它就會報告錯誤。
修改設置適應你的需求
變成新手容易犯的一個錯誤是,創(chuàng)建應用程序時選擇了錯誤的應用程序類型。例如,開發(fā)人員創(chuàng)建了一個新的Win32應用程序項目,并給這個項目創(chuàng)建了一個入口函數(shù)main。在這種情況下,創(chuàng)建應用程序時,開發(fā)人員就會看到一個連接程序的錯誤信息。這是因為Win32應用程序項目設置了/subsystem:windows連接程序開關,但是卻找不到相應的Winmain或者wWinmain函數(shù)。這是侯你可以有以下幾種解決方案。
1 將main函數(shù)改為Winmain函數(shù)
2 將/subsystem:windows開關改為/subsytem:console
3全部刪除/subsytem:windows開關,讓連接程序根據(jù)源代碼中實現(xiàn)的函數(shù)進行正確的操作
更改/subsystem:windows的方法:
右鍵點擊-->項目,選擇---->屬性,屬性頁 窗口彈出;
接著,點擊連接器->系統(tǒng),在右側會看到“子系統(tǒng)”選項,在這里可以選擇相應的連接程序開關.