-3

先生,我编写了一个简单的程序来在 Visual c++ 2008 中显示一个消息框,但问题是当我运行此代码时,当我按是时,一个对话框显示“你的项目已过时,你想构建它”显示错误,这是什么问题???代码在这里

#include <Windows.h>  /* The standard "windows.h" inclusion */

int WINAPI WinMain( HINSTANCE hInstance,        /* A handle to the current instance of the application. */
  HINSTANCE hPrevInstance,    /* A handle to the previous instance of the application. */
  LPSTR lpCmdLine,            /* The command line for the application, excluding the program name. */
  int nCmdShow)               /* Controls how the window is to be shown. */
{  
  /* Call to the MessageBox function */
  MessageBox(NULL, "Hello, Windows API!", "Hello", MB_OK);

  /* WinMain returns 0 if we exit before we enter message loop, more on that to come */
  return 0;  
}

每当我在visuall c ++ 2008中运行它时,它说项目已过期,你想构建所以我点击是但它不能在底部说

1>链接... 1>MSVCRTD.lib(crtexe.obj):错误 LNK2001:无法解析的外部符号 _main 1>C:\Documents and Settings** \My Documents\Visual Studio 2008\Projects\msg\Debug\msg。 exe : 致命错误 LNK1120: 1 unresolved externals 1>Build log was saved at "file://c:\Documents and Settings* * \My Documents\Visual Studio 2008\Projects\msg\msg\Debug\BuildLog.htm" 1 >Wrath Lands - 2 个错误,0 个警告 ========== 构建:0 个成功,1 个失败,0 个最新,0 个跳过 ======== ==

4

2 回答 2

0

错误信息error LNK2001: unresolved external symbol _main很重要。看起来您已经创建了一个控制台项目,但没有main()定义函数,因此出现链接器错误。

当您创建一个新的 Visual Studio 项目时,Win32 Console Application它假定您的程序的入口点将是普通的 C/C++main()函数,并且它与 C/C++ 库启动代码链接。如果您改为创建一个Win32 Project,则它假定入口点将是WinMain()并与 Windows 应用程序启动代码链接。

为避免此问题,您应该从Win32 Project. 要在事后修复它,您可以尝试进入Project Properties-> Linker->System并将SubSystem选项从更改Console (/SUBSYSTEM:CONSOLE)Windows (/SUBSYSTEM:WINDOWS)。请注意,可能还有其他设置也应该更改,所以我建议您从新开始Win32 Project

于 2012-08-26T04:26:54.273 回答
0

VS 默认创建 UNICODE 项目,因此像 MessageBox 这样的宏计算为 MessageBoxW,它需要 LPCWSTR 参数而不是 LPCSTR。尝试更改为: MessageBox(NULL, _T("Hello, Windows API!"), _T("Hello"), MB_OK);

于 2012-08-25T17:48:18.003 回答