web-dev-qa-db-ja.com

RubyとC ++を組み合わせる

私は私の友人と概念的なプロジェクトについて話し合っており、それを行う上で最も効果的な方法は、Rubyでロジックを実行しながらC++でエンジンを作成することです。
ただし、データを頻繁に渡す必要があります。次に例を示します。

  • エンジンは、Aが発生したことを報告し、それはproc配列でトリガーされます(イベント "A"は渡されますが、procはそれを使用しません)
  • RubyはBが発生するのを待つ必要があると判断します
  • Rubyは配列にプロシージャを追加します。プロシージャの配列は、C++エンジンの各サイクル中に繰り返されます
  • C++エンジンは、Bが発生したことを報告し、「イベントBを渡します(Rubyオブジェクトである必要があります)
  • RubyはイベントBを受け取り、次に何をするかを決定します

私は多言語を頻繁に使用することはなく、この方法で実装できるかどうか疑問に思っていました。 Ruby VALUEがC++にあることは知っていますが、2つを組み合わせる標準的な方法は何ですか?もちろん、RubyはPerlに従います " 1つの方法」ですが、多くの場合、標準化された方法があります。


SWIGでクイックテストを実行しましたが、すぐに問題が発生しました。私が見ることができるものから、Ruby(1.9.3p286、1.9.1 gems afaikを使用しますが)は共有オブジェクトをロードできません。 コード、実行されるアクション、および詳細

最新のRubyおよびSWIGバージョンにコンパイルしてみて、アップストリームのコンパイルエラーかどうかを確認しました。エラーが発生せず、問題が残っています。これらのSWIGと=の間に互換性がないようですRubyバージョン...または現在の問題Rubyバージョン。

4
user49306

Swig はその方法です。タイプマップを使用した私の理解では、データの受け渡しも可能です。それを見てください。

以下の役立つリンクもご覧ください

2
sarat