#include #include #include #include #include typedef struct { int index; double value; } x_space; #### include #include #include #include #include #include "lib.h" #define Malloc(type,n) (type *)malloc((n)*sizeof(type)) x_space* new_space(){ x_space *space = Malloc(x_space,1000); return space; } void destroy_space(x_space *space){ free(space); } #### /* lib.i */ %module libspace %{ #include "lib.h" extern x_space* new_space(); extern void destroy_space(x_space* space); %} extern x_space* new_space(); extern void destroy_space(x_space* space); #### #!/usr/bin/perl use libspace; my $space = libspace::new_space(); libspace::destroy_space($space); exit; #### swig -perl lib.i g++ -Wall -Wconversion -fPIC -c -I/usr/lib/perl/5.14.2/CORE lib.c lib_wrap.c g++ -shared lib.o lib_wrap.o -o libspace.so perl -I`pwd` test.pl