我下载了Microsoft DirectX SDK,并尝试使用MingW在Code::Blocks中打开示例BasicHLSL的示例,将文件编码更改为unicode并尝试编译后,我收到了非常多(500+)的警告,所有警告都说“空字符)(忽略[默认启用])和多个错误,所有错误均说“无效的预处理指令”,后跟#和一个字母。

真正奇怪的是该错误似乎与代码行不匹配,例如,这里是一个错误

C:\Program Files\Microsoft DirectX SDK (June 2010)\Samples\C++\DXUT\Core\DXUT.h Line 15 error: invalid preprocessing directive #d

现在是DXUT.h的第14-16行

14 #include "dxsdkver.h"
15 #if ( _DXSDK_PRODUCT_MAJOR < 9 || _DXSDK_BUILD_MAJOR < 1949 )
16 #error The installed DXSDK is out of date.
这是另一个错误
C:\Program Files\Microsoft DirectX SDK (June 2010)\Samples\C++\DXUT\Core\DXUT.h Line 133 error: invalid preprocessing directive #i

这是132-134行DXUT.h

132 D3DDEVTYPE DeviceType;
133文字代码

134 D3DFORMAT AdapterFormat;

最佳答案

我相信当您更改文件编码时,您将其更改为“宽字符”(UTF-16)。这将为每个字符创建一个16位值。大多数US-ASCII的宽字符表示形式的第一个字符为零。这可以解释为什么您会在源代码中出现很多“零”错误。编译器期望使用8位字符。

10-06 04:09