[英]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 上遇到了同樣的錯誤。 修復是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.