1

attach_function呼び出しを作成する代わりに、Ruby FFIをヘッダーファイルにポイントする方法はありますか?ヘッダーファイルには、基本的にまったく同じ情報が含まれています。

temp_convert.rb:

attach_function :temp_convert, [:float], :float

temp_convert.h:

float temp_convert(float temp);
4

2 に答える 2

4

C ヘッダー ファイルは C で記述されていますが、Ruby インタープリターは Ruby のみを解釈するためです。また、実行時にヘッダー ファイルを使用できない場合もあります。

ヘッダーから呼び出しを自動的に生成するという話ありました。attach_functionただし、上でほのめかしたように、これは基本的に、完全な C コンパイラ (正確には前半部分全体) を実装する必要があることを意味します。現時点では、Ruby の実装者は、独自の C コンパイラを作成するよりも、最初に FFI を使用する必要性を軽減するために、Ruby を C と同じくらい速く実行することに重点を置いています (これは、実行する必要があるだけであるにもかかわらず、重要な作業です)。実際のコード生成や最適化ではなく、字句解析、解析、セマンティック分析、タイピングの部分です)。

于 2010-11-21T11:00:30.210 に答える
2

Jörgが言うように、ヘッダースキャナーを実装するということは、すべてを正しく行うために、かなりの量のCコンパイラーを実装することを意味します。

痛みを和らげたいと思うかもしれないことの1つは、FFISwigGeneratorです。swigを使用してFFIインターフェイスを生成します。それでも、少し作業を行う必要があることを意味します。これは、単純なインターフェイス用のswig入力ファイルを生成するためのカットアンドペーストジョブに要約できます。

于 2010-11-21T23:56:20.073 に答える