按照网上说法在 
typedef void *PVOID; 
typedef void * POINTER_64 PVOID64; 
之前加一句#define POINTER_64 __ptr64 
即: 
#define POINTER_64 __ptr64 
typedef void *PVOID; 
typedef void * POINTER_64 PVOID64; 
出现nonstandard extension used : '__ptr64' keyword not supported in this product错误 
目录设置如下 
C:\DXSDK\INCLUDE 
C:\DXSDK\SAMPLES\C++\DIRECTSHOW\BASECLASSES 
C:\Program Files\Microsoft Platform SDK\Include 
C:\DXSDK\LIB 
C:\Program Files\Microsoft Platform SDK\Lib

解决方案 »

  1.   

    __ptr64  不支持,说明网上说的编译版本和你的不一样
      

  2.   

    __ptr64只有在编译64位平台的程序时才可以用。
      

  3.   

    你直接用PVOID或者void *就可以了。
      

  4.   

    cnzdgs 
    改成
    typedef void *PVOID;
    //typedef void * POINTER_64 PVOID64;
    typedef void * POINTER_64 PVOID;
    还是报错error C2146: syntax error : missing ';' before identifier 'PVOID'
      

  5.   

    我的意思是你不要定义PVOID64,在32位程序中不存在64位指针,在64位程序中PVOID就是64位指针,所以不需要再定义一个PVOID64。
      

  6.   

    cnzdgs
    我已经试过好多次了 都是不行 麻烦你写出正确的写法好么  ,谢谢
      

  7.   

    没什么可写的,不知道你想要什么样的代码。你用PVOID64做什么用?
      

  8.   

    我就希望改一下能编译通过,我在做directsound程序
      

  9.   

    你一直没说明白为什么要写这个定义,干脆你这样:
    typedef void* PVOID64;
      

  10.   

    关于加了
    #define   POINTER_64   __ptr64还报错的
    的问题根源可能有二
    1,你的SDK版本不够 --你是用的2005吗?看一下头文件目录 里包含对了没有。
    2,头文件包含里一定要先包含2005 sdk include再包含其他的。
      

  11.   


    http://hi.baidu.com/wuxiaoming1733/blog/item/aca6289754fa186555fb96dc.html可以改写winnt.h中的代码,将
    typedef void *PVOID;
    typedef void * POINTER_64 PVOID64;
    改成
    typedef void *PVOID;
    typedef void * POINTER_64;
    typedef void * PVOID64;