2009/05/25

XSですです(入門編)

perlからC++を呼び出そうとして、XSなるものに手を付けています。

とりあえず入門編ということで、簡単なHelloWorldを。

例として、Hogeというモジュールを作ることにします。


$ h2xs -A -n Hoge


次に生成されたMakefile.PLをごにょごにょいじります。


use 5.008008;
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
NAME => 'Hoge',
VERSION_FROM => 'lib/Hoge.pm', # finds $VERSION
PREREQ_PM => {}, # e.g., Module::Name => 1.1
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(ABSTRACT_FROM => 'lib/Hoge.pm', # retrieve abstract from module
AUTHOR => 'A. U. Thor ') : ()),
LIBS => [''], # e.g., '-lm'
DEFINE => '', # e.g., '-DHAVE_SOMETHING'
INC => '-I.', # e.g., '-I. -I/usr/include/other'
# Un-comment this if you add C files to link with later:
# OBJECT => '$(O_FILES)', # link all the C files too
CC => 'g++',
LD => 'g++',
XSOPT => '-C++',
);


※あぶない・・メールアドレス自動で入ってたw

次に、Hoge.xsをいじる。C++対応に。っていってもこの例では普通のCでよくて、C++関係ないけど。

#ifdef __cplusplus
extern "C"{
#endif

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#ifdef __cplusplus
}
#endif

MODULE = Hoge PACKAGE = Hoge

void
hello()
CODE:
printf("Hello, Hoge (´ω`)わくわく\n");


$perl Makefile.PL
$make
して、できたモジュールを使うと、

Hello, Hoge (´ω`)わくわく

0 件のコメント: