1. 程式人生 > >python 呼叫 C++ code

python 呼叫 C++ code

本文以例項code講解python 呼叫 C++的方法。
1. 如果沒有引數傳遞從python傳遞至C++,python呼叫C++的最簡單方法是將函式宣告為C可用函式,然後作為C code被python呼叫,如這裡三樓所示;
2. 有引數傳遞至C++函式,swig是最便捷的呼叫方法,以下面這個工程所示為例;

rachel.i (swig檔案):

%module rachel
%{
#include "rachel.h"
%}

extern int linear(int x, int w, int b);

C++ code 部分:

rachel.h:

#include<stdio.h>                 
#include<Python.h> int linear(int x, int w, int b);

rachel.cpp:

#include "rachel.h"       

int linear(int x, int w, int b){ 
    int res = w * x + b;         
    printf("%d\n", res);         
    return res;                  
}                                

執行命令:

swig -c
++ -python rachel.i g++ -c -fPIC rachel_wrap.cxx -I/home/zhangruiqing01/.jumbo/include/python2.7 -I./include g++ -shared rachel.o rachel_wrap.o -o _rachel.so

第一句swig生成rachel_warp.cxx (如果是C,則用swig -python rachel.i生成rachel_warp.c檔案);
最後一句生成動態連結庫_rachel.so供python呼叫(如果是C,則用ld -shared rachel.o rachel_warp.o -o _rachel.so);

python 呼叫部分:

>>> import _rachel
>>> _rachel.linear(1,2,5)
7

最後看一下本文中程式的結構:


這裡寫圖片描述