2011-03-29 42 views
2

简单的代码失败:解析外部符号失败

#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 ......项目引用\ DX11_3 \ DX11_3 \ MSVCRTD.LIB(crtexe.obj)DX11_3

错误2错误LNK1120:1周无法解析的外部...项目\ DX11_3 \调试\ DX11_3.exe 1 1 DX11_3

什么可能是错的?我已经下载并安装了Windows SDK,并在该项目中添加了det include文件夹。

回答

2

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

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

1

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

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

1

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

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