Как встроить 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, потому что мои потребности были очень просты, и я не хотел добавлять еще одну зависимость для сборки.

Возможно, вы захотите проверить tinyrb.

Я работал над Rarity ( https://github.com/Plaristote/Rarity), который выполняет две вещи:

  • Генерирует привязки Ruby из YML-описания вашего C++ API
  • Позволяет взаимодействовать со сценарием Ruby самым модным на C++

Я решил много вопросов (обработка исключений, сборка мусора)... Я больше нигде не видел кода, который Rarity использует для воплощения ваших привязок. Я также не видел ни одной другой библиотеки, которая позволяла бы такое простое преобразование между типами C++ и Ruby.

Я думаю, что Раритет стоит того! И я был бы рад получить отзывы:)!

Другие вопросы по тегам