Я хочу использовать LEAP Motion в D.
Поэтому он не имеет библиотеки C и имеет только библиотеку C ++.
Я попробовал SWIG 2.0.9 ниже команды.
swig -c++ -d -d2 leap.i
Эта команда выводит Leap.d, Leap_im.d, Leap_wrap.cxx, Leap_wrap.h.
Тем не менее, я не знаю, как использовать обертку в D, и я не могу найти, как использовать обертку.
Ссылка ошибка отображается, чтобы использовать его в целости и сохранности.
Как использовать эти обертки в D2?
И можно ли использовать без Leap.cpp (источник Leap.dll)?
Спасибо два ответа. и извините за поздний ответ из-за занятости.
Скажите первый вывод: я мог бы создать пример кода Leap на Win64, выполнив следующие шаги.
Вся команда ниже.
swig -c++ -d -d2 leap.i
dmd -c Leap.d Leap_im.d -m64
dmd LeapTest.d Leap.obj Leap_im.obj -m64
execute LeapTest.exe (require x64 Leap.dll and Leap_wrap.dll)
Я мог бы запустить программу Leap.
Но программа взломала событие обратного вызова onFrame.
Я попробую еще раз на x86 и выясню причины.
Несколько полезных ссылок (некоторая информация может быть устаревшей):
Я никогда не использовал SWIG лично, но мое предположение основано на общих знаниях о SWIG:
Итак, в вашем D-коде вы хотите импортировать модуль Leap.d. Затем скомпилируйте Leap_wrap.cxx в объектный файл с помощью компилятора C ++ и предоставьте объектные файлы D, Leap_wrap.o и целевую библиотеку на этапе компоновки. Это должно делать свое дело.
Постскриптум Источник Leap.cpp не должен быть нужен. Все вещи ссылаются непосредственно из Leap_wrap.cxx на целевой двоичный файл библиотеки.
Перейдите на IRC, либо FreeNode, либо OFTC, канал #D. Чтобы помочь вам, мы должны посмотреть, что находится в этих файлах. Мое первое предположение заключается в том, что вы должны скомпилировать как файлы D, так и файл C ++ в объектные файлы и связать их вместе. Я полагаю, что SWIG собирается объединить API C ++ в кучу функций C, и это, вероятно, то, что делает Leap_wrap.cxx.
Если API LEAP не сложен (т. Е. Представляет собой просто набор простых классов C ++), возможно, есть возможность напрямую взаимодействовать с ним. Об этом подробнее здесь: http://dlang.org/cpp_interface.html .