swig的原文:Simplified Wrapper and Interface Generator
顧名思義就是將C,C++可以很簡單的進行封裝並包裝成任何語言
好強大啊!! Orz 崇拜大師 swig官網:http://www.swig.org/
這裡示範用Ubuntu 將 C 語言轉成 python 可以使用的檔
如果您用其他系統可以參考這裡:
http://www.dabeaz.com/cgi-bin/wiki.pl?SwigFaq/SharedLibraries
假如你有下列的程式碼 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);
}
轉成python 的步驟如下:
step1:先寫一個 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);
step2:打以下swig 指令
產生example.py example_wrap.c 兩個檔
swig -python example.i
產生example.o example_wrap.o 兩個檔
這裡如果產生沒有找到python.h 就代表下面路徑不對
python2.7 資料夾裡必須有一個python.h 檔 端看您的版本而定
gcc -c -fpic example.c example_wrap.c -I/usr/include/python2.7
產生example.so 動態檔 記住example 前一定要加 _ 我也不知道為什麼@@
gcc -shared example.o example_wrap.o -o _example.so
然後你就可以快樂地調用拉~~~灑花~~~~YA

參考資料:
http://my.oschina.net/costaxu/blog/69634
留言列表
