一、在Windows上安装SWIG:
1.下载swigwin :
http://www.swig.org/download.html
(是swigwin不是swig,不然要自己手动搞swig.exe)
2.解压缩包swigwin-3.0.12.zip 至指定目录 (这里假设是D:\swig)
3.配置环境变量(假设python的安装目录为E:\python):
新建PYTHON_INCLUDE 路径为E:\Python\include
新建PYTHON_LIB 路径为E:\Python\libs\python36.lib
修改系统环境变量path 增加一个 D:\swig\swigwin-3.0.12\
注:如果扩展其他语言,套路也类似(swig文档):
4.打开命令行 输入 swig –help 检查是否成功
二、使用swig扩展python:
假设这里扩展的是C语言, (使用C语言写一个判断回文数的函数)
总共需要写3个文件分别是:palindrome.c palindrome.h palindrome.i
1、palindrome.c:
# include <string.h>
int is_palindrome(char * text){
int n = strlen(text);
for ( int i=0; i<n/2; ++i ){
if ( text[i]!=text[n-i-1] )
return 0;
}
return 1;
}
2、palindrome.h:
int is_palindrome(char * text);
3、palindrome.i:
%module palindrome
%{
#include <string.h>
%}
extern int is_palindrome(char * text);
然后命令行执行 swig -python palindrome.i , 会在工作目录生成一个 palindrome_wrap.c 和 palindrome.py (名字是%module后面的)
如果是扩展C++ 则再加一个-c++ 即 swig -c++ -python palindrome.i
接着利用distutils生成动态库
python自带一个distutils工具,可以用它来创建python的扩展模块。使用它也很简单,只需要先定义一个配置文件,通常是命名为setup.py
setup.py:
from distutils.core import setup, Extension
palindrome_module = Extension('_palindrome',
sources=['palindrome_wrap.c', 'palindrome.c'],
)
setup (name = 'palindrome',
version = '0.1',
author = "SWIG Docs",
description = """Simple swig example from docs""",
ext_modules = [palindrome_module],
py_modules = ["palindrome"],
)
最后在命令行
python setup.py build 会在工作目录生成一个build目录 ,可用的palindrome.py就在..\build\lib\中