使用DirectShow 时候出现的PVOID64xxxx错误的解决办法

错误提示:

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C2146: syntax error : missing ‘;’ before identifier ‘PVOID64′

问题原因:

VC6.0和2005中对于POINTER_64的定义不同:
6.0是在winnt.h中定义的,然后再包含basetsd.h,
8.0是直接在basetsd.h中定义的。

而DirectShow SDK里自带basetsd.h, 是为了兼容VC6的,但里面没有POINTER_64的定义。

所以,

在VC2005下面,不应该包含旧的basetsd.h
在VC6.0下面,需要使用DXSDK自带的basetsd.h,

解决办法:

把DXSDK\include\basetsd.h放在一个单独的目录里,
例如:DXSDK\include\vc6\basetsd.h
添加到VC6.0的include路径中,而在vc2005中不添加它

此解决办法是整理自instemast的帖子在
http://hack.gameres.com/showthread.asp?threadid=47059

Related Post

  • No Related Posts
  1. parker
    December 5th, 2008 | 7:42 pm

    事实证明,是有效的。

  2. March 5th, 2009 | 10:29 pm

    U9ajLq h1! nice site! oxyutelno