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

 

arrow
arrow
    創作者介紹
    創作者 Darwin的AI天地 的頭像
    Darwin的AI天地

    我的小小AI 天地

    Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()