【发布时间】:2013-01-20 19:35:15
【问题描述】:
我刚开始使用 C++,遇到了一个我无法修复的错误。
这是我到目前为止的所有代码(甚至无法让 hello world 工作):
#include "stdafx.h"
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, L"Hello World!",
L"Hello World!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
但是当我尝试运行它时会出现这个错误:
Test.cpp(11):错误 C2373:'WinMain':重新定义;不同的类型修饰符 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winbase.h(2588) :参见“WinMain”声明
当我查看 WinMain 的声明时,我看到每个参数前都有一个“__in”。我尝试添加它,但没有运气。我也尝试用 CALLBACK 替换 WINAPI,但也没有用。
【问题讨论】:
-
尝试使用注释掉的
stdafx.h包含构建 - 那里可能有一些宏导致问题。你用的是什么版本的VS?你能发布构建日志吗? -
这是 LPWSTR,不是 LPSTR。
-
@HansPassant 根据文档,LPSTR 是正确的 - msdn.microsoft.com/en-us/library/ms633559(VS.85).aspx
-
尝试使用
INT WinMain(...){...}而不是int WINAPI WinMain(...){...} -
@Michael Burr,我试过了,但没用。