Быстрый вопрос: я разрабатываю небольшую программу, с которой хотел бы работать с Kinect версий 1 и 2. Есть ли команда препроцессора, которую я могу использовать, чтобы компилятор C # пропустил мой код Kinect v2.0, если у меня нет установлен ли Kinect 2.0 sdk? (Например, когда я работаю с Windows 7).
Могу ли я использовать препроцессор C #, чтобы пропустить код Kinect v2.0?
Ответы (1)
В основном так:
#if KINECT1
// ... kinect1 specifict code
#endif
#if KINECT2
// ... kinect2 specific code
#endif
Конечно, вам придется определить эти символы вручную, в компиляторе или фреймворке нет встроенной возможности определить, какая версия есть в наличии, если вообще есть.
Вы можете обнаружить любую установленную Kinect SDK (версию) с помощью MSBuild. Например, поищите определенные разделы реестра, пути на локальных дисках и / или установите переменные среды, а затем установите эти символы из файлов проекта.
Например, включите следующий фрагмент в верхнюю часть вашего .csproj
файла (или поместите его в отдельный файл, который вы <Import>
).
<PropertyGroup Condition="Exists('C:\Program Files\...\Whatever\v1.0')">
<DefineConstants>KINECT1;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="Exists('C:\Program Files\...\Whatever\v2.0')">
<DefineConstants>KINECT2;$(DefineConstants)</DefineConstants>
</PropertyGroup>
(Имейте в виду, что это всего лишь пример, но не знаю, что было бы хорошим «триггером» для определения версии для kinect).
ОБНОВЛЕНИЕ
Комментарий @Scott Chamberlain помог. На самом деле SDK Kinect 1.0 устанавливает переменную среды KINECTSDK10_DIR
, а SDK 2.0 устанавливает переменную среды KINECTSDK20_DIR
.
Итак, вы можете сделать что-то вроде этого (это может помочь также):
<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>
KINECTSDK_DIR
(см. Раздел «Изменения в этом выпуске» в readme), путь похож на C:\Program Files\Microsoft SDKs\Kinect\v1.0 Beta2
, что должно позволить вам проанализировать версию.
- person Scott Chamberlain; 21.09.2015
KINECTSDK20_DIR
. Я не могу установить SDK на машину, на которой я был, поэтому я не мог проверить.
- person Scott Chamberlain; 21.09.2015