LNK2019:使用WinMain时函数___tmainCRTStartup错误中引用了未解析的外部符号_main

时间:2013-05-13 16:59:45

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

我一直在关注本教程,学习一些DirectX编程:http://www.rastertek.com/dx11tut02.html

我已经到了最后,尝试构建并在编译时抛出了这个错误:

MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

所以,我广泛搜索试图寻找解决方案,我尝试过的内容包括:

- 将入口点设置为WinMainCRTStartupwWinMainCRTStartupmainCRTStartup(可能还有其他人)

- 确保子系统设置为Windows而不是控制台,甚至尝试将其设置为“控制台”和“未设置”以防万一。

- 为包含main方法的文件添加现有项目。

- 下载教程中提供的代码,以确保它不是我的编码错误,仍然无法正常工作。

现在有趣的一点:

我尝试将教程代码下载到我的桌​​面(我通常无法访问,远离),其中包含Visual C ++ Express 2010的副本(我的笔记本电脑正在运行Visual Studio 2010 Professional)。它在桌面上工作得非常好,第一次,不必更改单个设置。

所以问题必须是在我的笔记本电脑上安装VS,或者与我的笔记本电脑有关。

我已经尝试将所有VS设置重置为默认设置,卸载VS,执行修复安装,安装Visual C ++ Express,安装Windows SDK v7.1,我能想到的一切,但仍然无效。

为了清楚起见,我用于主要的代码是:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iCmdshow)

请帮助,我花了两天时间搞乱这个并没有得到任何地方,我正试图完全重新安装Windows。

3 个答案:

答案 0 :(得分:2)

我今天遇到了类似的问题。

我的main.cpp未正确包含在构建中。

转到解决方案资源管理器,右键单击该文件并选择“属性”。

确保

  1. 该文件包含在构建和
  2. 工具设置为C / C ++编译工具。

答案 1 :(得分:1)

选择项目为Win32控制台而不是Win32窗口,这就是链接器无法将我的winmain识别为主程序的原因。

答案 2 :(得分:0)

如果您正在使用SDL(简单DirectMedia层库),您还需要链接SDL2main.lib,而不仅仅是针对SDL2.lib,因为SDL重新定义了函数main,顺便说一下,它需要如int main(int argc, char* args[])中那样完整拼写。