测试环境: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会提示找不到模块。