簡體   English   中英

錯誤 C2731:“wWinMain”:函數不能重載

[英]error C2731: 'wWinMain' : function cannot be overloaded

我將一個舊項目從 VC6 升級到 VS2008,現在出現此編譯錯誤:

error C2731: 'wWinMain' : function cannot be overloaded

在這些代碼行:

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)

同一個項目在 VC6 下編譯得很好。

謝謝大家,我終於找到了真正的罪魁禍首,這是一個錯字,我使用LPSTR lpCmdLine而不是LPTSTR lpCmdLine 真正的謎團是為什么它完全在 VC6 下編譯 - 它確實使用了wWinMain ,但不知何故 lpCmdLine 可以是char *而不是WCHAR *

現在我把它改成:

int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)

它也適用於 VS2008。

編輯:我在VC6下成功編譯甚至運行了這個函數定義的程序:

int APIENTRY wWinMain(int *hInstance, float hPrevInstance, int *lpCmdLine, float nCmdShow)
{
    MessageBox(0,L"Running.",0,0);
    return 0;
}

有趣的是,將float nCmdShow替換為double nCmdShow確實會出現鏈接器錯誤,我假設是因為 float 是 32 位,而 double 不是。

對我來說,它在 VS 2019 中將 WinMain 更改為 wWinMain 后起作用了

我在Win32 Console Application 上遇到了同樣的錯誤。 修復是:

  1. 打開項目>屬性...
  2. 展開配置屬性>鏈接器>系統
  3. 子系統設置為未設置
  4. 單擊確定

暫無
暫無

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

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