swig使用方法介紹


Gnuradio中使用到了swig來讓python可以調用c++代碼。

轉自:https://blog.csdn.net/qq_26105397/article/details/83153606

1.安裝swig

方法步驟:

a,下載swig源碼包

    http://www.swig.org/survey.html

b,解壓swig安裝包,解壓並進行安裝。

       tar   -xvf   swig-3.0.12.tar.gz

       ./configure  --prefix=/usr/localswig(此處指定安裝目錄,不指定默認直接默認系統路徑)

        (如果執行這不成功,缺少prce錯誤,說明缺少對應的文件,需要安裝對應庫,個人使用的是烏班圖,安裝法:apt-get install pcre-dev,或者下載源碼包進行安裝即可 )

        make  && make install

      至此,swig安裝完成。

注:或者直接使用apt-get命令安裝swig也可以。

2.使用

1)編寫C++代碼

test.h

#ifndef __TEST_H
#define __TEST_H
int add(int a,int b);
int  sub(int a,int b);
#endif

test.cpp

#include "test.h"

 int add(int a, int b){ return a+ b;}   
 int sub(int a,int b){ return a - b;}

2)編寫test.i文件

  • %module 后面的名字是被封裝的模塊名稱。封裝口,python通過這個名稱加載程序
  • %{  %}之間所添加的內容,一般包含此文件需要的一些函數聲明和頭文件。
  • %最后一部分,聲明了要封裝的函數和變量,直接使用%include 文件模塊頭文件直接包含即可

test.i

// file test.i

%module test

%{
    #define SWIG_WITH_INIT
    #include "test.h"
%}

%include "test.h"

3)執行swig命令

  swig -python -c++ test.i

  此時會生成對應的文件:  test_wrap.cxx  (即模塊名_wrap.cxx)

4)調用python自動化編譯工具

  利用python提供的自動化編譯模塊進行編譯。編寫一個編譯文件setup.py。需要的模塊是setuptools,沒有的話使用pip自行安裝。

setup.py

#!/usr/bin/python
#-- coding:utf8 --

from setuptools import setup, Extension

test_module = Extension("_test", sources = ['test_wrap.cxx', 'test.cpp'],)  #其中的名字,與自己編寫的文件對應就好,“_test”即模塊名稱,必須要有下划線

setup(name = 'test',version = '0.1',author = 'SWIG Docs',description = 'Simple swig pht from docs',ext_modules = [test_module],py_modules = ['test'],) #除了與模塊名有關的內容,其他的信息可以自己修改

   然后執行setup.py:python setup.py build test

5)在python中使用test模塊

  可在python解釋器中或者.py  使用import test,即可使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM