Как встроить Ruby в C++?
Каков наилучший способ встроить Ruby как язык сценариев в C++? Используете ruby.h? SWIG? Что-то другое? Что мне нужно, так это выставить некоторые объекты C++ для Ruby и заставить интерпретатор Ruby оценивать сценарии, которые обращаются к этим объектам. Меня не волнует расширение Ruby или доступ к нему в C++.
Я нашел эту статью о встраивании Ruby в C++, и хотя он очень полезен, он довольно старый, и мне было интересно, есть ли какие-либо другие ресурсы по этому вопросу (или реализации с открытым исходным кодом подобных движков).
5 ответов
Swig - это, вероятно, способ пойти..... но рубин не слишком хорошо встраивается......
если вам нужен язык, который хорошо встраивается в C++, попробуйте lua
Ruby предоставляет очень полезный файл README.EXT. Он содержит много информации о том, как расширить Ruby и конвертировать между типами C и Ruby.
Есть также этот отрывок из книги кирки, который в значительной степени описывает то же самое.
В моем случае, когда я добавил сценарии Ruby в свое приложение, я решил не использовать swig, потому что мои потребности были очень просты, и я не хотел добавлять еще одну зависимость для сборки.
Я работал над Rarity ( https://github.com/Plaristote/Rarity), который выполняет две вещи:
- Генерирует привязки Ruby из YML-описания вашего C++ API
- Позволяет взаимодействовать со сценарием Ruby самым модным на C++
Я решил много вопросов (обработка исключений, сборка мусора)... Я больше нигде не видел кода, который Rarity использует для воплощения ваших привязок. Я также не видел ни одной другой библиотеки, которая позволяла бы такое простое преобразование между типами C++ и Ruby.
Я думаю, что Раритет стоит того! И я был бы рад получить отзывы:)!