XS入門 - C/C++言語のバインディング



  1. Perl



  2. here

XSを使ったC/C++バインディングについて解説します。まず最初に、XSモジュールを作成する方法について解説します。

1. XSモジュールの作成

では実際にXSモジュールを作成してみましょう。XSモジュール作成コマンド、Makefile.PL、makeについて丁寧に解説しています。

2. perlapi

XSからPerlのデータを操作する方法にについて解説します。PerlC言語で実装されていますが、Perlの機能をC言語から呼び出すためのAPIがたくさん用意されています。

3. Makefile.PL関連

Makefileを生成するために、Perlでは、Makefile.PLというファイルを作って、ExtUtil::MakeMakerというモジュールを使用します。このExtUtil::MakeMakerというモジュールを便利に使用するための記事を掲載します。

4. 型変換

XSを使って、PerlからC言語を利用するということは、Perlの型とC言語の型を自由に変換する必要があるということです。型の変換方法について解説します。

5. XSのテクニック

XSのテクニックを紹介します。

複数モジュールを使う

たとえばMyModuleとMyModule::Utilの二つのモジュールをXSで実装したい場合に、簡単にできる方法を紹介しています。

メモリ管理

XSはC言語で書くことになるので、メモリ管理を手動で行わなくてはいけません。XSでは、Perlのデータはモータルという状態にすることで、自動で解放する仕組みがあり、それを使うと便利です。

6. C言語との連携

C言語のライブラリやC言語の構造体などをXSと連携する方法を解説します。

C言語のライブラリを読み込む方法

C言語で作成したライブラリをXSから利用する方法については以下の記事を参考にしてください。

C言語のデータ型の扱い

C言語の構造体をPerlのデータとして利用する方法を解説します。C言語の構造体をPerlのオブジェクトに対応させたい場合は、次の記事を参考にしてください。

7. C++との連携

XSの中でC++を使いたい場合は以下の記事を参考にしてください。C++を書く場合のXSファイルとMakefile.PLの書き方を解説しています。

C++ではC言語の構造体に加えてクラスが存在します。C++のクラスをXSで扱う方法については以下で解説しています。

XSの公式ドキュメント

Perl XSの公式ドキュメントへのリンクです。

その他にPerlのデータを操作するためのperlapiや、Perlの内部実装を解説したperlgutsなどが役に立つでしょう。