SWIG はあなたの問題の一部を解決します: あなたが書いた C++ 関数への Ruby バインディングを作成することができます。Ruby コードを評価できる C++ プログラムを作成するという問題の残りの半分は、必要に応じて簡単にも複雑にもできます。
簡単な方法は、プログラムを 2 つの半分に分割することです。dll に存在する ruby からアクセス可能な部分と、その dll にリンクして を介して Ruby を呼び出すアクセス不可能な部分ですsystem()
。
少し高いレベルでは、C++ から ruby の C API を使用して Ruby コードを実行できます。これにより、Ruby コードの実行方法をより適切に制御できるようになり、Ruby 例外から C++ 例外を生成するブロックで実行されたすべての Ruby をラップするなどのことを行う機会が提供されます。ここでの欠点は、Ruby の C API を理解する必要があることです。これはひどいものではありませんが、Lua の API ほどフレンドリーではありません。
それ以上を望むなら、あなたは深海にいることになります。Ruby と C++ はどちらも複雑な言語であり、それらを相互運用させることは非常に困難です。Éric Malenfant のリンクが役に立つかもしれません。