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

 在用vs2008編譯一個dx8項目遇到編譯錯誤:

c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: 語法錯誤 : 缺少“;”(在標識符“PVOID64”的前面)
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: 缺少類型說明符 - 假定爲 int。注意: C++ 不支持默認 int
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: 語法錯誤 : 缺少“;”(在標識符“Buffer”的前面)
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: 缺少類型說明符 - 假定爲 int。注意: C++ 不支持默認 int
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: 缺少類型說明符 - 假定爲 int。注意: C++ 不支持默認 int

網上有人說是vs的include順序問題,也有人說既然是找不到PVOID64加個typedef就行了。經過本人的試驗發現,的確是vs的include順序問題,調整include順序保證dx目錄在sdk目錄的下面即可解決問題。下面記錄步驟:
1、在vs中,選擇 工具->選項->項目和解決方案->VC++ 目錄,在 顯示以下內容的目錄 選擇 包含文件,確保條目 $(WindowsSdkDir)\include 和 $(FrameworkSDKDir)include 在任何dx目錄的前面。如果沒有dx目錄也ok(指的不會有這個錯誤)。如下圖:
 

2、在vs的解決方案資源管理器中右鍵相應的項目,選擇屬性,在屬性窗口的 配置屬性 -> C/C++ -> 常規 中的 附加包含目錄,點擊其右邊的小按鈕,在彈出的附加包含目錄中,確保條目 $(WindowsSdkDir)\include 和 $(FrameworkSDKDir)include 在任何dx目錄的前面。如下圖:
 

 
 

 

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