这个貌似是在Ruby中调用C++呀!
SWIG
一款不错工具,适合多种场景
提供使用脚本环境对代码执行单元和集成测试的能力
用TK 开发一个图形用户接口并将它与 C/C++ 后端集成
与 GNU Debugger 每次都需触发相比,SWIG易调试多
%module test
%constant char* Text = "Hello World with SWIG"
swig –ruby test.i
gcc –fPIC –c test_wrap.c –I$RUBY_INCLUDE
gcc –shared test_wrap.o –o test_wrap.so –lruby –L$RUBY_LIB
irb(main):001:0> require 'test_wrap'
=> true
irb(main):002:0> Test.constants
=> ["Text"]
irb(main):003:0> Test:: Text
=> "Hello World with SWIG"
就是让脚本语言调用这个C/C++吧!
/* File : example.c */
#include <time.h>
double My_variable = 3.0;
int fact(int n) {
if (n <= 1) return 1;
else return n*fact(n-1);
}
int my_mod(int x, int y) {
return (x%y);
}
char *get_time()
{
time_t ltime;
time(<ime);
return ctime(<ime);
}
/* example.i */
%module example
%{
/* Put header files here or function declarations like below */
extern double My_variable;
extern int fact(int n);
extern int my_mod(int x, int y);
extern char *get_time();
%}
extern double My_variable;
extern int fact(int n);
extern int my_mod(int x, int y);
extern char *get_time();
建立Python模块
转换编码C成Python模块很简单,只需要按如下做即可(请见其他操作系统的SWIG共享库帮助手册):
unix % swig -python example.i
unix % gcc -c example.c example_wrap.c
-I/usr/local/include/python2.1
unix % gcc -shared example.o example_wrap.o -o _example.so
我们现在可以使用如下Python模块 :
import example
example.fact(5)
120
example.my_mod(7,3)
1
example.get_time()
Sun Feb 11 23:01:07 1996'