linux学习笔记——swig

一、安装

参考链接:linux 安装swig

下载地址:https://sourceforge.net/projects/swig/files/swig/

tar xvf swig-4.0.2.tar.gz

cd swig-4.0.2

./configure

make

sudo make install

输入:swig -version 查看是否安装成功

错误:
./configure时出现错误 Cannot find pcre-config script from PCRE (Perl Compatible Regular Expressions) library package. This dependency is needed for configure to complete
原因: Linux下swig的正确安装 | 第一个(C++转Python接口)测试示例 | (二)
依赖库 PCRE 没有安装
PCRE 安装了,但是安装的版本和 swig 不匹配
解决方法:
可以指定参数 不加载 PCRE 模块
./configure --without-pcre

二、使用:

作用: swig的作用就是让脚本语言如python调用C/C++的里的函数。本质就是通过输入的c/c++语言生成目标的高级语言。
参考链接: SWIG-使用C语言扩展Python的神器

使用步骤

写一个C代码文件
编写接口文件(.i)
对接口文件运行SWIG,会生成一些额外的C语言代码
原来的C语言代码和生成的一起编译,生成一个库

编写c源代码

/* File : example.c */ 
#include <stdio.h>

int Circle (int x, int y, int radius) {
  /* Draw Circle */
  printf("Drawing the circle...\n");
  /* Return -1 to test contract post assertion */
  if (radius == 2)
    return -1;
  else
    return 1;
}

编写.i的接口文件

语法

/* File : example.i */

/* Basic C example for swig contract */
/* Tiger, University of Chicago, 2003 */

%module example

%contract Circle (int x, int y, int radius) {
require:
     x      >= 0;
     y      >= 0;
     radius >  x;
ensure:
     Circle >= 0;
}

%inline %{
extern int Circle (int x, int y, int radius);
%}

运行swig -python example.i

输入以上代码,这会生成一个example_wrap.c和example.py文件以及一个Examples文件夹
在这里插入图片描述
编译生成目标二进制的.o文件,再生成动态库文件,记住-I后面接的是本地python所在的头文件路径,可以通过find | grep python查找路径。

gcc -c -fpic example.c example_wrap.c -I/usr/include/python3.5/#将源代码编译生成目标文件,加入-fpic是生成与位置无关的目标文件。
gcc -shared example.o example_wrap.o -o _example.so#-shared是生成动态库。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值