python:使用SWIG和setuptools编写c语言扩展(windows)

测试环境:win10 64bit+python3.6+powershell+ Microsoft Visual C++ Build Tools 2015
------------------------------------------------------------------------------------------------------------


1. 安装SWIG
去官网下载安装包: http://www.swig.org/
1)解压安装包
2)将安装包文件夹中swig.exe所在路径添加到系统环境变量

2. 准备测试代码
palindrome.c
#include <string.h>
int is_palindrome(char *text) {
    int i, n = strlen(text);
    for (i = 0; i <= n/2; ++i) {
        if (text[i] != text[n-i-1]) 
        	return 0;
    }
    return 1;
}

3. 编写swig接口描述文件
palindrome.i
%module palindrome
%{
#include <string.h>
%}
extern int is_palindrome(char *text);
注:
也可以尝试直接使用源代码的头文件

4. 编写setup.py
from setuptools import setup,Extension
setup(name='palindrome',
	  version='1.0',
	  ext_modules=[Extension('_palindrome', ['palindrome.c', 'palindrome.i'])]
	)
5. 生成包装器和库
执行:python setup.py build_ext --inplace
这个步骤将生成以下文件:

注:执行此命令,python 会调用vc++编译工具,如果此前没有安装会有如下提示:

我们可以安装visual c++ build tools来解决。


6. 测试
在当前目录执行python进入解释器。
依次执行:
>>> import palindrome
>>> palindrome.is_palindrome("12321")
1
>>>
>>> palindrome.is_palindrome("1232")
0
测试ok!
注:如果在非当前目录进入python解释器,执行 import palindrome会提示找不到模块。

猜你喜欢

转载自blog.csdn.net/u012247418/article/details/80555517