2011年4月19日 星期二

Building DMODemo

今天試著要build一個directshow的範例DMODemo結果卻跑出下面的error

C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\objidl.h(11280): error C2061: syntax error : identifier '__RPC__out_xcount_part'

一開始以為是用錯SDK的library,因此我把Platform設定改為Windows7.1SDK。不幸的是錯誤依舊。


__RPC__out_xcount_part 是定義在 rpcsal.h 之中,我試著檢查SDK v7.0A與v7.1目錄下的rpcsal.h,確定這2個.h檔都有定義__RPC__out_xcount_part,很明顯的是include到錯誤的目錄。當一個人的電腦灌了好幾種編譯器與SDK這個問題是常常發生的。

進一步磁碟搜尋後在另外2個目錄下發現rpcsal.h檔,分別是在 C:\Program Files\Microsoft DirectX SDK (June 2010)\Include 與 C:\Program Files\Microsoft DirectX SDK (November 2007)\Include 之中。


答案已呼之欲出,DirectX SDK (November 2007)下的rpcsal.h未定義__RPC__out_xcount_part,罪人就是這個檔案。

修改的方式有2種,第一種比較簡單:把專案中[Property Pages] → [Configuration Properties] → [C/C++] → [General] → [Additional Include Directory]原本的設定$(DXSDK_DIR)Include刪除。

或是修改系統的DXSDK_DIR路徑為
C:\Program Files\Microsoft DirectX SDK (June 2010)\Include\

第2種作法比較一勞永役,但系統必需重開才能生效,不過如果你希望預設的DX版本為2007 Nov版的話,就只能採用第一種改法。

沒有留言:

張貼留言