我开始使用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)
即使在函数名称中使用__stdcall
或WINAPI
也似乎不起作用。至少,在我使用它们的方式中是这样,请告诉我是否不正确。
winMain
通常是您项目的控制台与窗口配置之间的症状。此外,前缀w
通常表示字符编码配置问题:w
表示宽字符集。 - Thomas Matthews#
的前面。所以这可能解释了错误消息?(#
应始终是该行的第一个字符。) - user3072164