前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python swig封装c/c++成Python库

python swig封装c/c++成Python库

作者头像
用户5760343
发布2022-05-14 14:44:23
5610
发布2022-05-14 14:44:23
举报
文章被收录于专栏:sktj

1、c封装 //add.h

ifndef ADD_H

define ADD_H

int add(int,int);

endif

//------------------------------------------------------------------------

//add.c

include "add.h"

int add(int a,int b) { return a+b; } swig需要一个输入文件(add.i)。 /* add.i / %module add /模块名*/

%{

include "add.h"

%}

int add(int,int); /add.h中的内容/ 2、

Makefile

_add.so : add.c add.h add_wrap.c gcc -shared -fPIC -o _add.so add.c add_wrap.c add_wrap.c : add.i swig -python -py3 add.i clean : rm _add.so add_wrap.c add.py 3、自己创建add.c、add.h、Makefile和add.i,编译生成add.py和_add.so。swig生成add.py和add_wrap.c,gcc将add.c和add_wrap.c编译成_add.so。在add_wrap.c搜索手动封装c函数的add.c文件中的相关结构便知其实质。 4、封装C++ //vector.hpp

ifndef VECTOR_HPP

define VECTOR_HPP

class Vector{ public: Vector(int,int); double abs(); void display(); private: int x; int y; };

endif

5、 //vector.cpp

include "vector.hpp"

include <iostream>

include <cmath>

using namespace std;

Vector::Vector(int a,int b){ x=a; y=b; } void Vector::display(){ cout << "(" << x << ',' << y << ')' << endl; } double Vector::abs(){ return sqrt(xx+yy); } 6、 /* vector.i */ %module vector %{

include "vector.hpp"

%}

class Vector{ public: Vector(int,int); double abs(); void display(); private: int x; int y; }; 6、Makefile

Makefile

_vector.so : vector.cpp vector.hpp vector_wrap.cxx g++ -shared -fPIC -I/usr/include/python3.4m -lpython3.4m -o _vector.so vector.cpp vector_wrap.cxx vector_wrap.cxx : vector.i swig -c++ -python -py3 vector.i clean : rm _vector.so vector_wrap.cxx vector.py 7、自己创建vector.cpp、vector.hpp、Makefile和vector.i,编译生成vector.py和_vector.so。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ifndef VECTOR_HPP
  • define VECTOR_HPP
  • endif
  • include "vector.hpp"
  • Makefile
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档