【发布时间】:2014-02-10 04:01:46
【问题描述】:
我开始使用 DirectX 11 并遇到以下编译错误:
错误 1 错误 LNK2019:未解析的外部符号 在函数 __tmainCRTStartup 中引用了 wWinMain@16
Error 2 error LNK1120: 1 unresolved externals(我认为这个错误是因为上面的错误)
我已经搜索了很长一段时间来解决这个问题,但是我在这个网站或通过谷歌的任何其他网站上找不到任何解决这个问题的方法。
我在这个项目中使用 Visual Studio 2012 和 c++。为了制作我的测试项目,我通过 New Project->Visual C++->Empty Project 创建了一个空项目。 我正在为这个项目使用标准编译器。
这是我的 main.cpp 文件中的 wWinMain 标头:
int wWinMain(HINSTANCE hInstance, HINSTANCE prevInstance,
LPWSTR cmdLine, int cmdShow)
IntelliSense 还不断在文件开头的某些包含行上抛出“4 IntelliSense: '#' not expected here”错误,这些行:(编辑:错误不断消失并重复出现)
#include <Windows.h>
#include <memory>
#include "BlankDemo.h"
#include <tchar.h>
我把它放在我的帖子中,因为我认为这可能会受到错误的影响,或者与错误有关,它可能只是包含文件。 BlankDemo.h 是一个测试演示的头文件,它只生成一个空白的 DirectX 11 窗口。
我使用的所有代码都来自一本关于 DirectX 的书;因为我还不习惯 DirectX,所以我尝试了许多修复程序,但似乎都没有解决这个错误,修复程序是:
转到属性->配置属性->常规->字符集并将其更改为“使用 Unicode 字符集”。
更改字符集后,错误仍然存在。
转到属性->链接器->系统并将子系统更改为 Windows (/SUBSYSTEM:WINDOWS)。
我也尝试将其更改为控制台 (/SUBSYSTEM:CONSOLE),这些更改似乎都无法解决问题。
我也去了属性->链接器->命令行并在“附加选项”中添加了/ENTRY:"wWinMainCRTStartup",这也不能解决问题。
我仍然在项目中留下了上面详述的项目更改。我只输入了几行代码,因为错误似乎与我在这篇文章中输入的代码有关,而且当我复制并粘贴代码时,它似乎格式不正确,但请告诉我是否需要查看更多代码。
编辑:我已将函数更改为int WINAPI __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE prevInstance,
LPWSTR cmdLine, int cmdShow)
即使在函数名中使用__stdcall 或WINAPI 似乎也不起作用。至少,以我使用它们的方式,如果这不正确,请告诉我。
【问题讨论】:
-
符号
winMain通常是项目的控制台与窗口配置的症状。此外,w前缀通常表示字符编码配置问题:w表示宽字符集。 -
感谢您的提示,是的,“w”表示宽字符集是有道理的,但这并不能帮助我解决问题。
-
您的代码中多次出现 unicode 符号 U+2028,这就是它无法正确格式化的原因。这是故意的吗? (我不知道这是否与错误有关。其他人可能会清除它。)其中一些在包含行中的
#前面。所以这可能解释错误信息? (#应该始终是该行的第一个字符。) -
对不起,'#' 是我代码中包含行中的第一个字符,IntelliSense 可能正在播放,但我不知道。
-
那里,我现在已经编辑了我的帖子,以便正确显示包含行。
标签: c++ visual-studio-2012 directx directx-11