2015-09-21 68 views

回答

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> 
+0

作爲一個僅供參考,以實現解決方案的MSBuild人:該SDK將創建一個環境變量'KINECTSDK_DIR'(見「此版本中的更改「(自述文件(http://www.microsoft.com/en-us/kinectforwindows/develop/readme.htm))部分),路徑類似於C:\ Program Files \ Microsoft SDKs \ Kinect \ v1.0 Beta2'應該允許你解析出版本。 –

+0

噢,酷它設置'KINECTSDK20_DIR'。我無法在機器上安裝SDK,所以我無法檢查。 –

+0

感謝這個傢伙,我設法讓這個工作,幾個筆記雖然,這不會爲我工作,除非我添加屬性組定義_下列所有現有的propertygroups和上面的第一個項目組。我不確定這是否可能是因爲標準csproj文件在定義DEBUG,TRACE等時清除了現有的常量。 – Wiredchop

相關問題