c++绑定python by swig

SWIG与Python动态库构建
本文详细介绍了如何使用SWIG工具将C/C++代码转换为Python可调用的动态库,包括SWIG的下载、配置环境变量、通过示例程序生成wrap文件和Python模块,以及利用Python的distutils工具构建pyd模块的全过程。

1. 下载

The latest release is swig-3.0.12. View the release notes. Windows users should download swigwin-3.0.12 which includes a prebuilt executable.

下载swig-3.0.12 windows版,解压后将swig.exe的路径添加到环境变量path

2. 跑demo

找到一个例子程序 swigwin-3.0.12\Examples\python\simple,先跑通这个实例

simple目录下已经为我们准备好了example.c文件

714832-20190302174845209-569072847.png

以及example.i文件

714832-20190302174905163-1486036045.png

通过swig生成2个文件

swig -python example.i

// 如果example是C++写的话就是

swig -c++ -python example.i

执行完命令后会生成两个文件:example_wrap.cexample.py.

example_wrap.cexample.c的功能封装了一层,准备生成pyd文件,也就是python使用的导入库

example.py 是将来别的模块想引用example这个库时,导入的python模块,显然核心功能是在pyd文件中,

所以这个py文件也就是简单的调用了pyd中的函数。

714832-20190302175412530-2023807382.png

通过python自带工具distutils生成动态库

编写setup文件,从网上抄个改改

from distutils.core import setup, Extension

example_module = Extension('_example',
            sources=['example.c', 'example_wrap.c'],
            )

setup (name='example',
       version='0.1',
       author="SWIG Docs",
       description="""Simple swig example from docs""",
       ext_modules=[example_module],
       py_modules=["example"],
      )

执行python setup.py build

成功生成pyd模块在build\lib.win32-2.7目录下

执行 python runme.py,调用c模块已完成

The gcd of 42 and 105 is 21
Foo = 3.0
Foo = 3.1415926

3.修改验证

转载于:https://www.cnblogs.com/Lnju/p/10462312.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值