我在Visual Studio中設置了一個項目來創建.dll。我在使用關鍵字「interface」的項目中包含了一個外部庫。這是給我以下錯誤:試圖編譯.dll時,出現接口關鍵字錯誤
error C2146: syntax error : missing ';' before identifier 'INuiAudioBeam'
這些代碼行發生錯誤:
#ifndef __INuiAudioBeam_FWD_DEFINED__
#define __INuiAudioBeam_FWD_DEFINED__
typedef interface INuiAudioBeam INuiAudioBeam; //Error on this line
#endif
上面的代碼是我已經包含在外部庫中的頭文件的一部分。編譯時,如果不包含庫的頭文件,編譯工作將會成功完成,不會出現任何錯誤(注意:鏈接庫不會導致任何問題)。
這是什麼解決方案?是否因爲我有一個外部庫用於創建我的dll?我應該創建一個.lib而不是一個DLL?
這不是C++語法,但Google說MS添加了接口關鍵字到託管C++。您可能需要告訴VS,Kinect庫以某種方式以託管C++編寫。 – idoby
你是否包含'NuiApi.h'? @busy_wait託管C++中沒有'interface'關鍵字。託管C++使用'__interface'關鍵字。 C++/CLI提供了複合關鍵字「接口類」和「接口結構」。你在這裏看到的'interface'是一個COM神器。此外,Kinect系統採用本地代碼實現,並通過COM公開其服務,以便通過本地代碼和託管代碼輕鬆銷燬。 – IInspectable
這是MIDL爲COM接口生成的任何.h文件中的標準輸出。我不得不猜測,您在項目中禁用了Microsoft特定的語言擴展,/ Za選項。 –