Drkcore

09 06 2006 SWIG Tweet

初めてのSWIG

openbabelのperlラッパーに触発されたので、実用Perlプログラミングの初版を片手に。SWIGを使って、マンデルブロ集合を描いてみた。

mandelbrot

思ってたよりも、楽だ。まず、本の18章の mandel.cとmandel.hを用意する。本だとgifに出力してあったが、FC1のgd-2.0.15.1ではできなかったのでpngで出力するようになってる。

続いて、SWIGインターフェースのFractal.i

%module Fractal
%{
#include "mandel.h"
%}
%include mandel.h

を用意したら、swigコマンドを実行。本だとperl5を引数にとってたけど、ネット調べたらperlでいけそうだし、-shadowオプション付けてるのが多いので、よくわからんけど付けてみた(これは後でちゃんと調べる)。

$ swig -shadow -perl Fractal.i

あとはMakeFile.PL書いて、普通にmakeでOK

use ExtUtils::MakeMaker;
WriteMakefile(
              'NAME' => 'Fractal',
              'LIBS' => ['-L/home/kzfm/perltest/swigtest -lgd'],
              'INC'  => '-I/home/kzfm/perltest/swigtest',
              'OBJECT' => 'mandel.o Fractal_wrap.o'
              );

Perlで呼び出す

普通にモジュールを呼び出すだけですな。

use Fractal;
Fractal::draw_mandel('mandel.png', 300, 300,
                     -1.5, 1.0,
                     2.0, 20);

で、絵の出来上がり!

実用Perlプログラミングは初版、第二版ともにもっているけど、型グロブとかクロージャとかXS,SWIGなんかは初版の方が詳しく書いてあるので、僕は今でも重宝するヨ。というか最近わかってきたっぽくて読むのが楽しい。

ProductName 実用Perlプログラミング
スリラム スリニバサン
オライリー・ジャパン / ?円 ( 1998-11 )


About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021