swig教學–c轉成python

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

 

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments