SWIG-новичок изучает возможность обертывания большой библиотеки C++ в основном для доступа Python. Говоря с разработчиками, работающими над C++, вы предложили написать слой взаимодействия C, который затем завернут в SWIG.
Два возможных варианта:
Base| Interop | Scripting Access
============================================
1) C++ | SWIG | Supported Languages
2) C++ | C | SWIG | Supported Languages.
Добавляет ли # 2 некоторые функциональные возможности или стабильность, которых я не хватает? Он выглядит как слой сложной сложности. Может ли кто-нибудь предположить, почему С-слой может быть лучшим интерфейсом для упаковки в SWIG? (В общих чертах, поскольку вы не видели библиотеку и т.д.),
SWIG очень эффективен и устранит многие трудоемкие шаблоны, которые вам придется писать иначе. Даже с boost :: python существует такой шаблонный код, хотя он намного меньше, чем все с нуля. Хорошая вещь с SWIG заключается в том, что она также упрощает интеграцию с дополнительными языками. Например, у меня была библиотека C++, которую я показывал на С#, поэтому я мог построить графический интерфейс в С#/WPF и с теми же входными файлами SWIG, которые были открыты для Lua, чтобы графический интерфейс мог быть написан с помощью слоя C++, Это было потрясающе!
О слое C вашего варианта # 2 я не вижу преимущества, если вы хотите интегрироваться с языком, который не поддерживает C++, но я не знаю такого языка (SWIG поддерживает около 20 и Я знаю только 4, поэтому, возможно, у одного из других есть такое ограничение). SWIG очень способен и может фактически обернуть довольно сложные интерфейсы. С помощью SWIG вы можете полностью изменить API, если хотите использовать директивы% inline и% extend. Я не могу думать о причине, что потребуется слой С.
Посмотрите на Boost Python, который работает с C++ напрямую.