2013-05-13 187 views
2

我一直在关注本教程学习一些DirectX的程序时,在功能___tmainCRTStartup错误引用:http://www.rastertek.com/dx11tut02.htmlLNK2019:无法解析的外部符号_main使用的WinMain

我已经算到了年底,试图建立丢给这个当我编译错误:

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

所以,我GOOGLE了广泛,试图找到一个解决方案,事情我已经试过包括:

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

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

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

- 在教程中下载提供的代码以确保它不是编码错误,但仍然无效。

现在有趣的一点:

我尝试下载教程代码到我的桌面(我通常不访问,是走),它具有的Visual C++快讯2010年(我的笔记本电脑的副本运行Visual Studio 2010专业版)。它在桌面上运行得非常好,第一次不必更改单个设置。

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

我已经尝试将所有VS设置重置为默认值,卸载VS,执行修复安装,安装Visual C++ Express,安装Windows SDK v7.1,所有我能想到的东西,它仍然不起作用。

只是要清楚,我使用的主要代码是:

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

请帮帮忙,我已经花了2天,这乱搞,不远矣,我在试图完全重新安装Windows的边缘。

+4

您正在将您的程序作为控制台模式应用程序进行链接。谁的入口点是main()。项目+属性,链接器,系统,子系统设置。将其更改为“Windows”。 – 2013-05-13 17:20:21

+0

正如我已经尝试过几次的事情列表所述: “确保子系统设置为Windows而不是控制台,甚至尝试将其设置为”控制台“,并将其设置为”未设置“以防万一。 当我打开该项目时,它已经设置为Windows,我尝试将它设置为控制台,然后返回到Windows,并将其设置为“未设置”,然后返回到Windows并且不起作用。 – 2013-05-13 17:55:04

回答

2

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

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

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

确保

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

选择项目为Win32控制台而不是Win32窗口,这就是为什么连接器无法识别我的winmain作为主程序。

+0

考虑改写你的答案。你在正确的轨道上。 – flumpb 2015-07-23 19:41:12

0

如果您使用的是SDL(Simple DirectMedia Layer库),则还需要链接到SDL2main.lib,而不仅仅是针对SDL2。因为SDL重新定义了功能main,顺便说一句,需要按照int main(int argc, char* args[])的说明完整地拼写出来。

相关问题