Ответ 1
Я не особенно люблю SWIG и предпочитаю сам писать код сопряжения. Perl поставляется с псевдоязыком под названием "XS" для взаимодействия с C или С++. К сожалению, для его использования вам нужно знать, по крайней мере, C, Perl, а затем узнать что-то об API-интерфейсе интерпретатора. Если вы уже знаете Perl и C хорошо, это не такой большой шаг. Взгляните на следующие основные документы по XS:
Кроме того, в Интернете есть много учебников и практических рекомендаций.
Теперь для взаимодействия с С++ с использованием XS требуются дополнительные шаги. Это может быть немного разочаровывает, чтобы работать сначала, но аккуратно встает на место, как только вы его получите. В этом отношении основная документация в лучшем случае является редкой. Но еще не все потеряно. Mattia Barbon, создатель привязок wxWidgets для Perl, написал отличный инструмент "XS ++", который делает его почти мертвым простым (или простым, как XS). Он включен в Wx, но мы работаем над его расщеплением в свой дистрибутив. Эта работа в процессе. Вы можете найти код Mattia XS ++ и измененную версию моей на github.
Запрет выпуска автономного XS ++ на CPAN, я бы предложил научиться писать XS для С++ из других ресурсов:
- Довольно давно Джон Кейзер написал отличный учебник по XS и С++. Он также содержит дополнительные указатели на полезные инструменты и документацию.
- Я изучил XS & С++ из этого учебника и некоторые примеры, которые я нашел в CPAN. Я не помню, на что я тогда смотрел. Но теперь я могу указать на свою работу как пример (хороший или плохой, я не знаю): Math:: SymbolicX:: FastEvaluator.
- Аналогично, запланированный дистрибутив XS ++ содержит полный (хотя и бессмысленный) пример использования XS ++ для интерфейса С++ и Perl. Поскольку XS ++ переведен на простой XS, вы можете использовать его для генерации примеров.
PS: Также есть модуль Inline:: CPP. Если это работает, это, вероятно, самое простое решение. Я сомневаюсь, что он может обрабатывать шаблоны.