sas*_*alm 4 c++ winapi compiler-errors visual-studio
我将旧项目从VC6升级到VS2008,现在我得到了这个编译错误:
error C2731: 'wWinMain' : function cannot be overloaded
Run Code Online (Sandbox Code Playgroud)
在这些代码行:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
Run Code Online (Sandbox Code Playgroud)
在VC6下,同一个项目编译得很好.
sas*_*alm 11
谢谢大家,我终于找到了真正的罪魁祸首,这是一个错字,我用LPSTR lpCmdLine而不是LPTSTR lpCmdLine.真正的谜团是为什么它在VC6下完全编译 - 它确实使用了wWinMain,但不知何故,lpCmdLine可以char *代替它WCHAR *.
现在我把它改为:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
Run Code Online (Sandbox Code Playgroud)
它也适用于VS2008.
编辑:我成功编译甚至在VC6下使用此函数定义运行程序:
int APIENTRY wWinMain(int *hInstance, float hPrevInstance, int *lpCmdLine, float nCmdShow)
{
MessageBox(0,L"Running.",0,0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,替换float nCmdShow为double nCmdShow确实会给出链接器错误,我假设因为float是32位而double则不是.
| 归档时间: |
|
| 查看次数: |
11093 次 |
| 最近记录: |