SWIG:Python调用C

最简单的操作也需要四个文件:.h,.c,.i,setup.py

1、example.h 文件

int fact(int n);

2、example.c 文件

#include "example.h"

int fact(int n){ 
    if (n < 0){
        return 0;
    }
    if (n == 0){
        return 1;
    }
    else{
        return n * fact(n-1);
    }
    
}

3、example.i 文件

(interface file,module + example,将会创建 example.py)

%module example

%{
#include "example.h"
%}

int fact(int n);

先用下列命令行创建 example.py 和 example_wrap.c

$ swig -python example.i

4、setup.py 文件

(利用 distuils 进行编译扩展的模块,其中Extension 第一个参数是定义扩展模块的名字“_example” ,第二个参数 sources 包含包装文件和源文件)

from distutils.core import setup, Extension

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

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


输入命令行:(将创建 两个.o文件)

$ python setup.py build_ext --inplace 

测试模块

$ python -c 'import example'

你可能感兴趣的:(SWIG:Python调用C)