2008-10-27 13 views
18

Jaki jest najlepszy sposób na osadzenie Ruby jako języka skryptowego w C++? Używając ruby.h? HAUST? Coś innego? Potrzebuję odsłonić niektóre obiekty C++ na Ruby i mieć interpreter Ruby oceniający skrypty, które uzyskują dostęp do tych obiektów. Nie dbam o rozszerzenie Rubiego ani o dostęp do niego w C++.Jak osadzić Ruby w C++?

Znalazłem ten article on embedding Ruby in C++, i chociaż jest bardzo przydatny, jest trochę stary i zastanawiałem się, czy są jakieś inne zasoby na ten temat (lub open source implementacje podobnych silników).

Odpowiedz

4

haust jest probablly droga ..... ale Ruby robi osadzić zbyt dobrze ......

jeśli chcesz się językiem, który osadza ładnie w C++, spróbuj lua

+0

Próbowałem lua, jest to wspaniały język i bardzo łatwo go osadzić. Ruby jest wymogiem, ponieważ mam już dużo istniejącego kodu Rubiego, który chciałbym ponownie użyć. –

+1

następnie swig jest całkiem dobry ..... i nie próbuj wielowątkowości! –

+1

Tak, nawet nie próbuj osadzić ruby ​​i używaj go z jednego wątku w aplikacjach wielowątkowych. Oni (programy ruby) przez cały czas zmieniają programy obsługi sygnałów, zmienne środowiska, bieżące katalogi itp. – Lothar

11

Rice wygląda bardzo obiecująco.

+4

Uwaga dla użytkowników systemu Windows: Ryż znany jest tylko poprawnie skompilować i uruchomić pod Cygwin i Mingw. :( –

6

Ruby dostarcza bardzo pomocnego pliku README.EXT. Zawiera on wiele informacji o rozszerzeniu Rubiego i konwersji między typami Ruby C &.

Istnieje również ten excerpt z pick axe book, który prawie obejmuje to samo.

W moim przypadku, gdy dodałem skrypt Ruby do mojej aplikacji, zdecydowałem się nie używać swig, ponieważ moje potrzeby były bardzo proste i nie chciałem dodawać kolejnej zależności.

1

pracuję na Rarity (https://github.com/Plaristote/Rarity), który robi dwie rzeczy:

  • generuje powiązania Ruby z opisem yml swojej C++ API
  • Umożliwia interakcję z Ruby skryptu w sposób najbardziej C++ istnieje

mam rozwiązać sporo kwestii (obsługa wyjątków, zbieranie śmieci) ... nie widziałem nigdzie indziej generowanie kodu, który wykorzystuje do Rzadkość dokonać wiązania się do życia. Nie widziałem też żadnej innej biblioteki, która umożliwia tak łatwą konwersję między typami C++ i Ruby.

Myślę, że Rarity jest wart strzały! I z radością również otrzymam informację zwrotną :)!