PerlXS:C編
C/C++ライブラリのperlラッパーの作り方をメモ。まずは単純なCラッパーを。
まずh2xsコマンドで雛形を作る。
$$ h2xs -A -n Test
するとTest.xsというファイルができる。このファイル内ではC/C++のコードを書くことができる。普通にPerlで書くよりも高速な動作が期待できる。例えば、以下のようにする。
$$ cat Test.xs #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #include <stdio.h> MODULE = Test PACKAGE = Test int myprint(str, n) char *str int n CODE: int i; for (i = 0; i < n; i++) { printf("%s ", str); } printf("\n"); RETVAl = 0; OUTPUT: RETVAL
できたらmakeしてPerlモジュールをつくる。
perl Makefile.PL gmake
これによって
blib/lib/Test.pm blib/arch/auto/Test/Test.bs blib/arch/auto/Test/Test.so
というファイルができる。あとはモジュールを呼び出すPerlコードを書けばよい。
$$ do.pl #!/usr/local/bin/perl -Iblib/lib -Iblib/arch use strict; use warnings; use Test; my $r = Test::myprint("hello", 5); print "return $r\n"; $$ ./do.pl hello hello hello hello hello return 0;
となる。
なおXSの詳細な仕様はperlgutsを読むと良い。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlguts.html