未解决的外部符号在非常简单的应用程序中失败

时间:2011-03-29 10:47:45

标签: c++ visual-studio-2010 windows-7

简单代码失败:

#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    MessageBox(NULL, L"Hello World!", L"Just another Hello World program!", MB_ICONEXCLAMATION | MB_OK);

    return 0;
}

错误:

错误1错误LNK2019:函数_ _tmainCRTStartup中未解析的外部符号主要引用... Projects \ DX11_3 \ DX11_3 \ MSVCRTD.lib(crtexe.obj)DX11_3

错误2错误LNK1120:1个未解析的外部...项目\ DX11_3 \ Debug \ DX11_3.exe 1 1 DX11_3

可能有什么不对?我已下载并安装了Windows SDK,将det include文件夹添加到项目中。

3 个答案:

答案 0 :(得分:2)

程序的入口点是执行开始的地方。对于控制台应用程序,默认为main。对于没有控制台的Windows应用程序,默认为WinMain

链接器正在搜索main,这很可能是因为您创建了一个控制台应用程序。进入项目设置并将子系统更改为Windows。您可以在配置设置 - &gt;中找到此选项。链接器 - &gt;系统

答案 1 :(得分:1)

严格而正式地说,您的程序不包含名为main的函数,因此它不是有效的C ++。

要启用WinMain等非标准扩展,您必须确保创建Windows项目,或者将编译器选项设置为编译Windows程序。

答案 2 :(得分:1)

您正在将应用程序编译为“控制台应用程序”,因此Visual Studio会尝试查找名为main()的入口点。但是您的代码定义了一个“GUI应用程序”,其中包含一个名为WinMain()的入口点。

您应该编辑项目设置,并在链接器设置中将应用程序类型设置为“控制台应用程序”。