Joh*_*now 11 c++ windows visual-studio-2010
我最近在应用程序上获得了源代码.当我试图构建解决方案时,我在winnt.h包含的所有部分都会收到错误.错误代码略有不同,但它们始终指向winnt.h中的这些行:
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;
Run Code Online (Sandbox Code Playgroud)
和
struct {
DWORD crc;
BYTE rgbReserved[14];
} CRC;
Run Code Online (Sandbox Code Playgroud)
那么,原因可能是什么?winnt.h是标准头文件,尚未修改.是否与使用VS 2010或使用64位窗口的我有关?还是需要某种配置?
编辑:这是确切的错误代码:
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(290): error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(290): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(8992): error C2146: syntax error : missing ';' before identifier 'Buffer'
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(8992): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(8992): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(11525): error C2059: syntax error : 'constant'
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(11525): error C2238: unexpected token(s) preceding ';'
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(11556): error C2059: syntax error : 'constant'
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(11556): error C2238: unexpected token(s) preceding ';'
Run Code Online (Sandbox Code Playgroud)
Dav*_*nan 11
你需要包括windows.h而不是winnt.h.当你包括windows.h它时,反过来,包括winnt.h.您需要以这种方式执行此操作,以便编译所需的宏winnt.h.
在这种情况下,POINTER_64定义BaseTsd.h如下:
#define POINTER_64 __ptr64
Run Code Online (Sandbox Code Playgroud)
但是,如果你包括winnt.h之前包括windows.h然后POINTER_64没有定义.
如果您使用的是DirectX SDK,请尝试更改最后搜索的include和lib的VC++目录.