2008-10-27 17 views
18

Ruby'yi C++ dilinde bir komut dosyası dili olarak eklemenin en iyi yolu nedir? Ruby.h kullanıyor musunuz? Yudum? Başka bir şey? İhtiyacım olan şey, bazı C++ nesnelerini Ruby'ye göstermek ve Ruby yorumlayıcısının bu nesnelere erişen komut dosyalarını değerlendirmesini sağlamak. Ruby'yi genişletmeyi veya C++'da erişmeyi umursamıyorum.C++ Ruby'de nasıl katıştırılır?

Bu article on embedding Ruby in C++'u buldum ve çok kullanışlı olsa da, biraz eski ve konuyla ilgili başka kaynaklar olup olmadığını merak ediyordum (veya benzer motorların açık kaynak uygulamaları).

cevap

4

yudum probablly gitmek yoludur ..... ama yakut doesnt C içine güzelce gömer bir dil istiyorsanız ......

++, lua

+0

Ben lua denedim, bu harika bir dil ve gömmek oldukça kolaydı. Yakut bir gerekliliktir, çünkü zaten var olan çok fazla Ruby kodu var. –

+1

sonra swig oldukça iyi ..... ve çok iş parçacığı deneyin! –

+1

Evet bile, ruby'yi gömmeye ve çoklu iş parçacıklı uygulamalarınızda tek bir iş parçacığından kullanmaya çalışmayın. Onlar (ruby programları) her zaman sinyal işleyicileri, envionrment değişkenleri, güncel dizinler vb. – Lothar

11

Rice deneyin çok iyi gömmek çok umut verici görünüyor.

+4

Windows kullanıcıları için not: Pirinci sadece Cygwin ve Mingw kapsamında düzgün bir şekilde derleyip çalıştırdığı biliniyor. :( –

6

Yakut çok yararlı README.EXT dosyasını sağlar. Ruby'yi genişletmek ve C & Ruby tipleri arasında dönüştürme hakkında birçok bilgi vardır.

da hemen hemen aynı şeyi kapsar pick axe book bu excerpt yoktur. Benim durumumda

, benim uygulamada benim ihtiyaçlarını çok basit çünkü ben yudum kullanılmasına karşı karar verdi ve ben henüz başka yapı bağımlılığını eklemek istemiyordu için Ruby komut dosyası eklendiğinde.

1

Ben iki şey yapar Ender (https://github.com/Plaristote/Rarity), çalışıyoruz:

  • sizin C++ API
  • bir YML açıklamasından Yakut bağlamaları üretir çoğu C++ moda Yakut komut dosyası ile etkileşimini sağlar Ben başka bir yerde Nadirlik sizin bağlamaları hayata geçirmek için kullandığı kod oluşturma görmedim sorunun iyi bir anlaşma (istisna işleme, çöp toplama) ... çözdük

yoktur. Ayrıca C++ ve Ruby türleri arasında bu kadar kolay bir dönüşüme izin veren başka bir lib programı da görmedim.

Ben nadir değerinde atış düşünüyorum! Ve ben de bazı geri bildirim almak için sevinirim :)!