2011-03-29 39 views
2

簡單的代碼失敗:解析外部符號失敗

#include <Windows.h> 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) 
{ 
    MessageBox(NULL, L"Hello World!", L"Just another Hello World program!", MB_ICONEXCLAMATION | MB_OK); 

    return 0; 
} 

錯誤:

錯誤1個錯誤LNK2019:解析外部符號主要在功能_ _tmainCRTStartup ......項目引用\ DX11_3 \ DX11_3 \ MSVCRTD.LIB(crtexe.obj)DX11_3

錯誤2錯誤LNK1120:1周無法解析的外部...項目\ DX11_3 \調試\ DX11_3.exe 1 1 DX11_3

什麼可能是錯的?我已經下載並安裝了Windows SDK,並在該項目中添加了det include文件夾。

回答

2

該程序的入口點是執行開始的地方。對於控制檯應用程序,默認爲main。對於沒有控制檯的Windows應用程序,默認爲WinMain

鏈接器正在搜索main,很可能是因爲您創建了控制檯應用程序。進入您的項目設置並將子系統更改爲Windows。您可以在配置設置 - >連接器 - >系統中找到此選項。

1

嚴格而言,您的程序不包含名爲main的函數,因此它不是有效的C++。

要啓用像WinMain這樣的非標準擴展,您必須確保您正在創建Windows項目,或者將編譯器選項設置爲編譯Windows程序。

1

您正在將您的應用程序編譯爲「控制檯應用程序」,因此Visual Studio會嘗試查找名爲main()的入口點。但是您的代碼定義了一個名爲WinMain()的入口點的「GUI應用程序」。

您應該編輯您的項目設置並在連接器設置中將應用程序類型設置爲「控制檯應用程序」。