c++绑定python by swig
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文件
以及example.i文件
通过swig生成2个文件
swig -python example.i
// 如果example是C++写的话就是
swig -c++ -python example.i
执行完命令后会生成两个文件:example_wrap.c
和example.py
.
example_wrap.c
把example.c
的功能封装了一层,准备生成pyd文件,也就是python使用的导入库
example.py
是将来别的模块想引用example这个库时,导入的python模块,显然核心功能是在pyd文件中,
所以这个py文件也就是简单的调用了pyd中的函数。
通过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