等等
2 如何安装swig。
在linux下安装非常简单。最常见的就是通过源码安装。源码大家可以在http://www.swig.org/download.html上下载。然后就是安装的老三步:configure;make;make install
也可以在有apt系统上通过apt工具安装。
比如在我用的debian6(squeeze)上,直接用apt工具:
aptitute install swig
3 一个简单的SWIG的例子
假如你有这样一段C的代码,文件名为example.c
/* File : example.c */ double My_variable = 3.0; /* Compute factorial of n */ int fact(int n) { if (n <= 1) return 1; else return n*fact(n-1); } /* Compute n mod m */ int my_mod(int n, int m) { return(n % m); }
你想在你的脚本语言的代码里面调用fact函数。你可以通过一段非常简单的SWIG脚本,文件名为example.i:
/* File : example.i */ %module example %{ /* Put headers and other declarations here */ extern double My_variable; extern int fact(int); extern int my_mod(int n, int m); %} extern double My_variable; extern int fact(int); extern int my_mod(int n, int m);
这段.i文件分成3个部分:
第一部分是 %module example, %module是SWIG脚本的一个命令,它表示生成的包装器将在一个模块内的名称。
第二部分是%{... %},这一部分的内容会原封不动的插入到 xxxx_wrap.c或 xxxx_wrap.cxx文件中。
第三部分就是剩下的部分了。这部分就是C语言或者C++语言的接口声明了。和C/C++的语法是一样的。
然后在安装了swig的机器上执行下面的命令。我以linux操作系统下,为python语言生成接口为例:
swig -python example.i gcc -c -fpic example.c example_wrap.c -I/usr/local/include/python2.0 gcc -shared example.o example_wrap.o -o _example.so
在执行完第一步swig之后,实际上会生成两个文件example.py和example_wrap.c。 example.py就是python语言可以调用的example模块,而example_wrap.c则封装了example.c的封装器。
在这之后你就可以直接在python里直接调用example.c提供的接口了:
unix > python Python 2.0 (#6, Feb 21 2001, 13:29:45) [GCC egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)] on linux2 Type "copyright", "credits" or "license" for more information. >>> import example >>> example.fact(4) 24 >>> example.my_mod(23,7) 2 >>> example.cvar.My_variable + 4.5 7.5
总之,安装和使用swig都是非常简单的事情。使用swig能够大大减轻程序员的痛苦程度,帮助你更快的完成你想要的功能。
你可以在此处下载本文的例子:https://dl.dropbox.com/u/35106490/swig1.tgz