http://www.coder4.com/archives/2141

SWIG:Simplified Wrapper and Interface Generator,顾名思义,就是将C/C++包装为其他高级语言的Wrapper工具,非常好用。

该项目历史悠久(创始于1995年!),且一直非常活跃,目前最新版本为2011年5月发布的2.0.4。

1、安装SWIG

 
 
1
2
3
4
5
6
7
//prdownloads.sourceforge.net/swig/swig-2.0.4.tar.gz
2.0.4.tar.gz
/
#我们这里只编译Python的语言支持,可以根据你得需要加别的!
python
make
install

2、C++代码
我们以包装一个简单的类为例子:

 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string>
;
 
MyObj
{
:
 
)
{
;
;
}
:
;
;

3、编写Interface文件
SWIG需要一个intf文件,可以写的很复杂,也可以偷懒:只引用你要Wrap的.h头问件就可以啦!

 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* myobj.i */
myobj
 
{
 
/* 相关引用 */
#include <string>
}
 
 
/* 对STL的支持 */
i
 
 
/* Wrapper并生成代码 */

4、生成Wrapper代码

 
 
1
2
3
4
5
6
7
8
#生成,第一个python是目标语言,跌入个-c++是启用c++模式
i
 
#成功的话,会生成如下文件
cxx
#编译,生成so文件,注意一定要用g++而不是ld做Link!!
/ -fPIC
so

5、测试

 
 
1
2
3
4
5
myobj
)
)
'Hello, ICT'
>>>

6、补充

如果你想使用复合类型,例如vector<string>,请务必在.i文件中声明!

 
 
1
2
3
4
{
;
 
}

相关文章: