Loading

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.cexample.py.

example_wrap.cexample.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

3.修改验证

posted @ 2019-03-02 18:51  Lnju  阅读(652)  评论(0编辑  收藏  举报