错误 LNK2019: 在函数 ___tmainCRTStartup 中引用了未解析的外部符号 _wWinMain@16

3

我开始使用DirectX 11,但是遇到了以下编译错误:

错误1:错误LNK2019:无法解析的外部符号,该符号在函数_tmainCRTStartup中被引用

错误2:错误LNK1120:1个无法解析的外部(我认为这个错误是因为刚才那个错误导致的)

我已经在各处搜索了很长时间,但是在此站点或通过谷歌搜索其他站点上都找不到解决这个问题的方法。

我正在使用Visual Studio 2012和c++来完成这个项目。为了创建我的测试项目,我通过“新建项目”->“Visual C++”->“空项目”创建了一个空项目。我正在使用标准编译器完成此项目。

这是我在main.cpp文件中的wWinMain头文件:

int wWinMain(HINSTANCE hInstance, HINSTANCE prevInstance,
 LPWSTR cmdLine, int cmdShow)

IntelliSense还会在文件开头的一些包含行上抛出“4 IntelliSense:在此处不应期望'#'”错误,这些行是:(编辑:错误会反复消失和出现)

#include <Windows.h>
#include <memory>
#include "BlankDemo.h"
#include <tchar.h>

我将这个放在我的帖子中,因为我认为这可能会被影响或与错误有关,但也可能只是包含文件。BlankDemo.h是一个测试演示的头文件,它只产生一个空的DirectX 11窗口。
我使用的所有代码都来自一本关于DirectX的书籍;因为我没有习惯使用DirectX,我尝试了许多修复方法,但似乎没有一个能够解决这个错误,这些修复方法包括:
转到属性->配置属性->常规->字符集,并将其更改为“使用Unicode字符集”。
更改字符集后,错误仍然存在。
转到属性->链接器->系统,将Subsystem更改为Windows(/ SUBSYSTEM:WINDOWS)。
我还尝试将其更改为Console(/ SUBSYSTEM:CONSOLE),但这些更改似乎都无法解决问题。
我还转到属性->链接器->命令行,并在“附加选项”中添加/ENTRY:“wWinMainCRTStartup”,但这并不能解决问题。
我仍然保留了项目中详细说明的更改。我只插入了几行代码,因为看起来这些错误与我在此帖子中插入的代码有关,当我复制和粘贴代码时,它似乎无法正确格式化,但请告诉我是否需要查看更多代码。
编辑:我已将函数更改为int WINAPI __stdcall wWinMain(HINSTANCE hInstance,HINSTANCE prevInstance,LPWSTR cmdLine,int cmdShow)即使在函数名称中使用__stdcallWINAPI也似乎不起作用。至少,在我使用它们的方式中是这样,请告诉我是否不正确。

符号 winMain 通常是您项目的控制台与窗口配置之间的症状。此外,前缀 w 通常表示字符编码配置问题:w 表示宽字符集。 - Thomas Matthews
1
谢谢提示,是的,“w”表示宽字符集,但这并不能帮助我解决问题。 - FioKron
你的代码中有几个Unicode符号U+2028,这就是为什么它无法正确格式化的原因。这是有意为之吗?(我不知道这是否与错误有关。其他人可能会澄清这一点。)其中一些位于包含行中#的前面。所以这可能解释了错误消息?(#应始终是该行的第一个字符。) - user3072164
抱歉,在我的代码中,'#'是包含行中的第一个字符,据我所知,IntelliSense可能出了问题,但我不确定。 - FioKron
我已经编辑了我的帖子,使得包含的行显示正确。 - FioKron
1个回答

3

很抱歉,伙计们,我在这里犯了错误,即一开始没有使用Unicode,在属性->配置属性->常规->字符集下选择多字节字符集开始。看起来,通过使用多字节字符集来启动,这让Visual Studio 2012认为我正在使用多字节字符集。这导致它抛出了错误,即使在属性->链接器->高级下的入口点已设置为wWinMainCRTStartup也是如此。这很有道理,因为字符未被正确识别。


另外,我必须等待7个小时才能接受这个答案,请在此期间告诉我是否有其他答案。 - FioKron
我只是重做了这个项目几次,直到最终让它工作了。 - FioKron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接