002 DirectShow的"PVOID64错误"

Post date: 2015/3/18 上午 01:18:47

DirectShow的"PVOID64错误"

输出:

1>c:\program files\windows kits\8.0\include\um\winnt.h(301): error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)

1>c:\program files\windows kits\8.0\include\um\winnt.h(301): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

1>c:\program files\windows kits\8.0\include\um\winnt.h(11698): error C2146: 语法错误: 缺少“;”(在标识符“Buffer”的前面)

1>c:\program files\windows kits\8.0\include\um\winnt.h(11698): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

错误列表:

错误 1 error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面) c:\program files\windows kits\8.0\include\um\winnt.h 301

错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\program files\windows kits\8.0\include\um\winnt.h 301

错误 3 error C2146: 语法错误: 缺少“;”(在标识符“Buffer”的前面) c:\program files\windows kits\8.0\include\um\winnt.h 11698

错误 4 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\program files\windows kits\8.0\include\um\winnt.h 11698

修改:

在"typedef void * POINTER_64 PVOID64;"之前, 添加#define POINTER_64 __ptr64, 即可.

代码:

[cpp] view plaincopy

  1. #define POINTER_64 __ptr64 //by me
  2. typedef void *PVOID;
  3. typedef void * POINTER_64 PVOID64;

原因:

打开winnt.h文件, 发现问题就是在winnt.h头文件中无POINTER_64的定义造成的.搜索vc下的头文件, 发现在basetsd.h头文件中有POINTER_64的定义, 而在winnt.h头文件中也包含了该头文件. 而在dxsdk9中也有basetsd.h头文件, 而该文件无POINTER_64的定义, 因此编译通不过.