error C2146: 語法錯誤 : 缺少“;”(在標識符“PVOID64”的前面)[轉]

error C2146: 語法錯誤 : 缺少“;”(在標識符“PVOID64”的前面)[轉]

error C2146: 語法錯誤 : 缺少“;”(在標識符“PVOID64”的前面) 來源:http://houjixin.blog.163.com/blog/static/356284102009112395049370/ DirectShow 2009-12-23 09:50:49 閱讀311 評論0 字號:大中小打開winnt.h文件,發現問題就是在winnt.h頭文件中無POINTER_64的定義造成的。搜索vc下的頭文件,發現在basetsd.h頭文件中有POINTER_64的定義,而在winnt.h頭文件中也包含了該頭文件。而在dxsdk9中也有basetsd.h頭文件,而該文件無POINTER_64的定義,因此編譯通不過。調整頭文件搜索順序後,編譯也不行,原來在VC6目錄裏也有basetsd.h頭文件,而該文件無POINTER_64的定義。可能因爲VC6的Include目錄在系統變量include裏有,所以改變VS中的頭文件搜索順序不能解決問題。最後我吧winnt.h中的#include 改成"basetsd.h"就可以了。

 

 

 

error C2146: syntax error : missing ';' before identifier 'PVOID64'

error C2146: syntax error : missing ';' before identifier 'PVOID64'
由 directdraw 的升級引起

在網上查了下資料,一般的解決方法是:

解決方法:在winnt.h中加上以下語句

#define POINTER_64 __ptr64

typedef void *PVOID;
typedef void * POINTER_64 PVOID64;

個人認爲最好不去改winnt.h.
有時需要要調整include文件夾的順序來解決問題,platform SDK中的winnt.h
DDK中的,vc6.0 自帶的winnt.h有多個。 dxsdk 中的這些所用到的winnt.h版本不同。

通過調整IDE 工具-> 選項-> 項目vc++目錄;包含文件include 的順序來解決這類問題
使dxsdk需要的winnt.h所在文件夾在最上面。

調整後,問題解決!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章