2

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

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

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

因此,我广泛搜索以尝试找到解决方案,我尝试过的事情包括:

- 将入口点设置为WinMainCRTStartup,wWinMainCRTStartupmainCRTStartup(可能还有其他)

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

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

- 下载了教程中提供的代码,以确保它不是我的编码错误,仍然没有工作。

现在有趣的一点:

我尝试将教程代码下载到具有 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)

请帮忙,我花了 2 天时间来解决这个问题,但没有得到任何结果,我正处于尝试完全重新安装 Windows 的边缘。

4

3 回答 3

2

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

main.cpp的没有正确包含在构建中。

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

确保

  1. 该文件包含在构建中,并且
  2. 工具设置为 C/C++ 编译工具。
于 2013-09-19T23:33:42.440 回答
1

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

于 2015-07-23T19:14:33.520 回答
0

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

于 2016-07-11T06:45:30.770 回答