2008-10-27 29 views
18

Cách tốt nhất để nhúng Ruby là ngôn ngữ kịch bản trong C++ là gì? Sử dụng ruby.h? SWIG? Thứ gì khác? Những gì tôi cần là để lộ một số đối tượng C++ với Ruby và có trình thông dịch Ruby đánh giá các kịch bản truy cập các đối tượng này. Tôi không quan tâm đến việc mở rộng Ruby hoặc truy cập nó trong C++.Làm thế nào để nhúng Ruby trong C++?

Tôi đã tìm thấy điều này article on embedding Ruby in C++ và mặc dù nó rất hữu ích, nó cũ và tôi đã tự hỏi liệu có bất kỳ tài nguyên nào khác về chủ đề (hoặc triển khai nguồn mở của các công cụ tương tự) hay không.

Trả lời

4

uống một lân là probablly con đường để đi ..... nhưng ruby ​​doesnt nhúng quá tốt ......

nếu bạn muốn có một ngôn ngữ mà nhúng độc đáo vào C++, thử lua

+0

Tôi đã thử lua, đó là một ngôn ngữ tuyệt vời và khá dễ dàng để nhúng. Tuy nhiên, Ruby là một yêu cầu, vì tôi đã có rất nhiều mã Ruby hiện có mà tôi muốn sử dụng lại. –

+1

sau đó swig là khá tốt ..... và không thử đa luồng! –

+1

Có, ngay cả không # t cố gắng để nhúng ruby ​​và sử dụng nó từ một chủ đề duy nhất trong các ứng dụng đa luồng. Họ (các chương trình ruby) đang thay đổi xử lý tín hiệu, biến môi trường, thư mục hiện tại, vv tất cả các thời gian. – Lothar

11

Rice trông rất hứa hẹn.

+4

Lưu ý cho người dùng Windows: Gạo chỉ được biết để biên dịch và chạy dưới Cygwin và Mingw. :( –

6

Ruby cung cấp tệp README.EXT rất hữu ích. Nó có rất nhiều thông tin về cách mở rộng Ruby, và chuyển đổi giữa các loại C & Ruby.

Ngoài ra còn có excerpt này từ số pick axe book có khá nhiều thứ tương tự.

Trong trường hợp của mình, khi tôi thêm kịch bản lệnh Ruby vào ứng dụng của mình, tôi quyết định không sử dụng swig, vì nhu cầu của tôi rất đơn giản và tôi không muốn thêm một phụ thuộc xây dựng nào khác.

1

Tôi đã làm việc trên Hiếm (https://github.com/Plaristote/Rarity), trong đó cần thực hiện hai điều:

  • Tạo Ruby bindings từ một mô tả YML của C++ API
  • Cho phép tương tác với Ruby kịch bản trong hầu hết C++ thời trang đó là

Tôi đã giải quyết được nhiều câu hỏi (xử lý ngoại lệ, thu gom rác) ... Tôi chưa thấy bất kỳ nơi nào khác tạo mã mà Rarity sử dụng để làm cho các ràng buộc của bạn trở nên sống động. Tôi cũng chưa thấy bất kỳ thư viện nào khác cho phép chuyển đổi dễ dàng như vậy giữa các kiểu C++ và Ruby.

Tôi nghĩ rằng Rarity đáng để bắn! Và tôi cũng rất vui khi có một số phản hồi :)!

Các vấn đề liên quan