Расширяете Ruby с C ++? - PullRequest
       9

Расширяете Ruby с C ++?

1 голос
/ 13 января 2010

Есть ли способ передать объекты Ruby в приложение C ++? Я никогда раньше такого не делал, и мне было интересно, возможно ли это. Требуется ли модифицировать код ядра Ruby?

Ответы [ 4 ]

5 голосов
/ 13 января 2010

Да и нет соответственно.

Ruby написан на C. C ++ по своему дизайну совместим с C.

Все объекты в Ruby содержатся в объекте VALUE (тип union), который можно легко обойти.

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

1 голос
/ 14 января 2010

Расширение Ruby с помощью C ++ не является проблемой. По сути, единственное, что вам нужно помнить при написании вашего расширения, - это объявить метод init вашего расширения как extern "C", например так:

extern "C" void Init_your_extension () { // ... }

Мне недавно пришлось представить функцию C ++ для моего кода ruby, вы можете найти код здесь, если хотите (это просто базовый материал, поэтому я думаю, что будет хорошо, чтобы вы начали):

1 голос
/ 13 января 2010

Книга Programming Ruby содержит некоторые подробности о доступе к Ruby из C. Я не уверен, насколько актуальна документация. Это сообщение в блоге описывает также API Ruby C.

0 голосов
/ 29 июля 2013

Вы можете создавать расширения Ruby в C ++ с помощью Rice, посмотрите на http://www.ibm.com/developerworks/library/os-extendruby/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...