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.cpp:
#include "example.h" int AddOne(int n) { return n+1; } int Sqrt(int n) { return n*n; }
example.h:
int AddOne(int n); int Sqrt(int n);
轉成python 的步驟如下:
step1:先寫一個 example.i 檔
%module example %{ #include "example.h" %} %include "example.h"
step2:打以下swig 指令
產生example.py example_wrap.cxx 兩個檔
swig -c++ -python example.i
產生example.o
g++ -O2 -fPIC -c example.cpp
產生example_wrap.o
這裡如果產生沒有找到python.h 就代表下面路徑不對
python2.7 資料夾裡必須有一個python.h 檔 端看您的版本而定
g++ -O2 -fPIC -c example_wrap.cxx -I/usr/include/python2.7
產生example.so 動態檔 記住example 前一定要加 _ 我也不知道為什麼@@
g++ -shared example.o example_wrap.o -o _example.so
然後你就可以快樂地調用拉~~~灑花~~~~YA
參考資料:
http://www.swig.org/Doc1.3/Python.html#Python_nn10
http://falldog7.blogspot.tw/2013/07/python-swig-c-function.html