安装
下载 swigwin软件包,解压到合适的位置,然后将路径添加到环境变量即可。
 
编写C++代码
//vector.hpp
class Vector
{
private:
    int x;
    int y;
public:
    Vector(int,int);
    double abs();
    void display();
};
//vector.cpp
#include "vector.hpp"
#include <iostream>
#include <cmath>
using namespace std;
Vector::Vector(int a,int b){  x=a;  y=b;  }
void Vector::display(){  cout << "(" << x << ',' << y << ')' << endl; }
double Vector::abs(){	return sqrt(x*x+y*y);  }
打包成接口
编写*.i文件
 
/* vector.i */
%module vector
%{
#include "vector.hpp"
%}
%include "vector.hpp"
在命令行输入
swig -c++ -python mod.i
生成两个新文件:
vector.py
vector_warp.cxx
编译
新建setup.py文件
#setup.py
from setuptools import setup, Extension
 
 
mod_module = Extension('_vector',
                           sources=['vector_wrap.cxx', 'vector.cpp'],
                           )
 
setup (name = 'vector',
       version = '0.1',
       author      = "beshar",
       description = """Simple swig example from docs""",
       ext_modules = [mod_module],
       py_modules = ["vector"],
       )
命令行输入:
python setup.py build_ext --inplace
编译出.pyd文件
测试
新建一个test.py文件
import vector
v=vector.Vector(2,3)
v.display()
d=v.abs()
print(d)
输出:
(2,3)
3.605551275463989
发布
编译完成后,仅需保留vector.py和相应的*.pyd文件即可。



















