快速問題,我正在開發一個小程序,我想使用Kinect版本1和2.有沒有可以使用的預處理器命令,以便C#編譯器跳過我的Kinect v2.0代碼,如果我不'沒有安裝Kinect 2.0 sdk? (例如,當我在Windows 7上工作時)。我可以使用C#預處理器跳過Kinect v2.0代碼嗎?
1
A
回答
4
基本上是這樣的:
#if KINECT1
// ... kinect1 specifict code
#endif
#if KINECT2
// ... kinect2 specific code
#endif
當然,你必須定義這些符號manually,有在編譯或框架來判斷哪個是可用的,如果根本沒有內置功能。
您可能能夠使用MSBuild檢測到任何已安裝的Kinect SDK(版本)。例如,查找特定註冊表項,本地驅動器上的路徑和/或設置環境變量,然後從項目文件中設置這些符號。
例如,在您的.csproj
文件的頂部包含以下片段(或將其放在一個單獨的文件中,即您的文件<Import>
)。 (請注意,以上只是一個例子,但不知道什麼是檢測kinect版本的好「觸發器」)。
UPDATE
@Scott張伯倫評論幫助。實際上,Kinect 1.0 SDK設置了KINECTSDK10_DIR
環境變量,2.0 SDK設置了KINECTSDK20_DIR
環境變量。
所以,你可能做這樣的事情(this可能有所幫助):
<PropertyGroup Condition="'$(KINECTSDK10_DIR)' != '' and Exists('$(KINECTSDK10_DIR)')">
<DefineConstants>KINECT1;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(KINECTSDK20_DIR)' != '' and Exists('$(KINECTSDK20_DIR)')">
<DefineConstants>KINECT2;$(DefineConstants)</DefineConstants>
</PropertyGroup>
相關問題
- 1. 預處理器跳過部分代碼C
- 2. C代碼預處理器
- 3. 預處理後gcc可以輸出C代碼嗎?
- 4. 我可以強制C預處理器生成新行嗎?
- 5. 使用GCC預處理C代碼
- 6. 如何編寫在C++中跳過代碼行的預處理器定義?
- 7. C++預處理器位置代碼:: blocks?
- 8. 我可以使用C#處理程序處理HTML5事件嗎?
- 9. 我可以使用模板處理迭代器嗎?
- 10. 我可以在Mac上使用Kinect嗎?
- 11. PDF可以處理HTML代碼嗎?
- 12. 我有一個Drupal站點:我可以使用Sass預處理器嗎?
- 13. C預處理器宏可以生成函數嗎?
- 14. 解讀下預預處理器代碼
- 15. 擴展C預處理器以注入代碼
- 16. 我可以有條件地替換預處理器參數嗎?
- 17. gcc C預處理器可以使用shell命令的輸出嗎?
- 18. C#預處理器 - 禁用XAML設計器的代碼
- 19. 我可以使用處理器選擇我的程序嗎?
- 20. 我可以在Rails視圖上使用多個預處理器嗎?
- 21. 預處理器指令行可以像C中一樣用在C#中嗎?
- 22. 我可以讓C++預處理器在編譯期間發送輸出嗎?
- 23. 我可以從中央文件設置C#預處理器指令嗎?
- 24. 我可以使用SyntaxNet作爲我的C++代碼庫嗎?
- 25. 如何可以跳過使用C#
- 26. 我可以使用C++/CX中的lambda處理事件嗎?
- 27. 我可以使用C++來處理Twitter API嗎?
- 28. 在ASP.NET中,HTTPHandler可以跳過Global.asax.cs Application_BeginRequest處理程序嗎?
- 29. C++預處理錯誤代碼
- 30. 如果代碼將被模糊處理,我總是可以使用Reflection API嗎?
作爲一個僅供參考,以實現解決方案的MSBuild人:該SDK將創建一個環境變量'KINECTSDK_DIR'(見「此版本中的更改「(自述文件(http://www.microsoft.com/en-us/kinectforwindows/develop/readme.htm))部分),路徑類似於C:\ Program Files \ Microsoft SDKs \ Kinect \ v1.0 Beta2'應該允許你解析出版本。 –
噢,酷它設置'KINECTSDK20_DIR'。我無法在機器上安裝SDK,所以我無法檢查。 –
感謝這個傢伙,我設法讓這個工作,幾個筆記雖然,這不會爲我工作,除非我添加屬性組定義_下列所有現有的propertygroups和上面的第一個項目組。我不確定這是否可能是因爲標準csproj文件在定義DEBUG,TRACE等時清除了現有的常量。 – Wiredchop