Visual studio 之常见编译错误(1):syntax error : missing ';' before identifier 'PVOID64'

来自博客:http://blog.csdn.net/chenyusiyuan/article/details/4643313的总结:

     一般可通过调整 DirectShow/Include 在 Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for –> Include Files 中的位置(把它下移到最下面),然后把 Project -> Properties -> Configuration Properties –> C/C++ 中的 Additional Include Directories 里面的内容(../../../../include)删掉,重新编译,PVOID64的错误就会消失,原因如下:

POINTER_64 是一个宏,在64位编译下起作用,它包含在SDK目录下的BASETSD.H中(Microsoft Visual Studio 8/VC/PlatformSDK/Include/basetsd.h(23):#define POINTER_64 __ptr64),但DXSDK自己也带了一个basetsd.h,里面没有定义POINTER_64,从而导致出错,只需要改变 include files 的优先级即可。

当然,也可以改写 winnt.h 中的代码,在下面这两行: 
typedef  void  *PVOID;  
typedef  void  *POINTER_64  PVOID64; 
之前增加一行: 
#define  POINTER_64  __ptr64 
不过最好不要轻易改写 winnt.h 。

      除了以上方法外还有一种高效的方法,博友 @FlashInSky 提出:“这种做法在vs2010高版本中很难奏效,不如自己在包含头文件之前,写上#define POINTER_64 __ptr64”,此方法同样可以解决该错误,同时也避免修改winnt.h的内容。

 

posted on 2014-11-26 13:20  Curnane  阅读(786)  评论(0编辑  收藏  举报

导航