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
全站熱搜
留言列表