2016-11-04 9 views
0

私の一般的な質問はこれです:Cアプリケーションに他の言語のライブラリを含める最も一般的な方法は何ですか?Cアプリケーションで他の言語のライブラリを含める

たとえば、関数Xを実行するためのRubyライブラリと、関数Yを実行するためのPythonライブラリがある場合、それぞれの関数を使用するC言語のプログラムを作成するにはどうすればよいですか?

これらの上位言語のCライブラリにアクセスするためのラッパーがありますが、それ以外の方法のラッパーはありますか?これを一般的に処理する共通の方法はありますか?

答えて

1

これらのネイティブコードライブラリはコンパイルされていますか、またはこれらのソースライブラリ(つまり、Rubyソースコードを含むテキストファイルの束)ですか?

RubyやLuaなどの言語のライブラリには、通常、公開されたバイナリインタフェース(「ABI」)があります。これは、ライブラリとその関数がどのように機能するかを記述した低レベルのドキュメントです。多くの場合、これらはCやC++で定義されています。また、Ruby自体のインタプリタ/コンパイラを実装するために使用された言語もあります。

あなたはそのドキュメントを見つけ、関心のある部分を呼び出す方法を見つけなければなりません。C言語と同じABIを使用する言語もあります。ライブラリの内容を直接呼び出すことができます(これはアセンブラとC、あるいはC++のように統合して、Cの関数を生成することができます)。

後者の場合、通常、埋め込み可能なバージョンの言語を見つけて、アプリケーション内からスクリプトを実行する方法を調べる必要があります(これは、たとえばLuaが通常使用される方法です)。

ただし、Rubyライブラリが必要ですか?多くの場合、共通ライブラリは、C/C++ライブラリを使用して実装され、スクリプト言語にラップされているため、スクリプト変換レイヤをスキップして、多少低レベルのライブラリを使用することができます。

PS - SWIGのような自動ラッパージェネレーターもあります。このラッパージェネレーターは、ある言語でファイルを読み込んで翻訳コードを書きます。

関連する問題