簡體   English   中英

無法鏈接Hello World!

[英]Can't link Hello World!

從書中復制代碼的人(編程Windows第5版):

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ;

     return 0 ;
}

鏈接到推薦本書的主題。 無法用VS2010編譯它。 我究竟做錯了什么?

Error   1   error LNK2001: unresolved external symbol _WinMainCRTStartup

謝謝。

這取決於您如何設置項目。 在VS2010中,如果我通過File-> New-> Project,Visual C ++,Empty Project創建一個新項目,然后添加一個新的C ++文件,並復制你的代碼,它編譯並運行就好了。

如果您創建了不同類型的項目,則可能使用不同的鏈接庫。 嘗試在解決方案資源管理器中右鍵單擊項目,轉到屬性 - >鏈接器 - >系統,並將子系統設置為“Windows(/ SUBSYSTEM:WINDOWS)

Win32 API已經過時了,但如果您想進行本機Windows編程,則大部分都是完全可用的。 Windows做了大量工作,以確保只要您遵循文檔,舊的API將不會更改。 您仍然可以從1992年編譯16位Windows 3.1代碼並在32位Windows 7上運行它。

編輯:也可能是在Properties-> C / C ++ - > Advanced中,您將Omit Default Library Name設置為“Yes”,您可能希望將其設置為“No”

或者還應將Properties-> Linker-> Input-> Ignore Default Libs設置為No.

您需要設置項目的鏈接器設置以創建Windows GUI程序而不是控制台程序:

  • “Linker / System / SubSystem”應設置為“Windows(/ SUBSYSTEM:WINDOWS)”

通常,在創建項目並選擇Windows GUI應用程序模板時,此設置會正確設置。 不幸的是,如果項目設置為不正確的應用程序類型,設置有點埋沒(我花了一些時間去挖掘它)。

確保您已將源文件實際添加到項目中。 這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM