随风飞世 发表于 2017-4-29 13:09:49

python调用c/c++库

  Python以其简单的语法及众多第三方库的支持,使得运用非常广泛. 但是如何利用Python进行混合调用,调用已完成的*.dll库功能,刚好最近偶尔看到swig这个小工具,能够生成包装后接口文件,使得脚本语言间接调用c/c++库.  一般像java/c#等语言只能调用纯C类库,Swig竟然可以处理C++库,可能内部作了处理,稍候研究
  一. 下载 Swig 直接解压即可
  二. C代码

// example.h
#ifndef _EXAMPLE_H
#define _EXAMPLE_H
int Add(int a,int b);
#endif
// example.cpp
#include "example.h"
int Add( int a,int b )
{
return a+b;
}

  三. 编写接口描述文件,生成python模块
  接口说明文件: example.i

%module example
%{
#include "example.h"
%}
%include "example.h"

swig -python example.i
  此时会在工程下生成 example.py 和 example_wrap.c 两个文件
  四. VC6下编译扩展
  1. 建立空的win32动态库工程
  2. 将example.h example.c example_wrap.c三个文件添加至工程中
  3. 设置Include path: d:\Python27\include, 设置Lib path: d:\Python27\libs
  4. 设置输出文件名: _example.pyd ,千万不能忘了下划线,example.py中会默认调用_example这个模块
  5. 成功编译release版本后会在目录中生成文件 _example.pyd 
  五.测试运行

  注: _example.pyd和example.py必须在同一目录,否则会找不到模块
页: [1]
查看完整版本: python调用c/c++库