一、SWIG環(huán)境搭建
1、 下載Swig for Windows:http://www.swig.org/download.html
2、 解壓 .zip 文件到目錄,比如:D:\backupsoftware
3、 添加環(huán)境變量到path, 比如: D:\backupsoftware\swigwin-3.0.10
4、 簡(jiǎn)單測(cè)試安裝是否成功:
打開Dos,在命令行執(zhí)行: swig --help, 顯示 Target Language Options即表明安裝成功。二、以c++為例1、編寫c++源文件//example.h
#include <iostream>
using namespace std;
class Example{
public:
void say_hello();
};
//example.cpp
#include "example.h"
void Example::say_hello()
{
printf("hello");
}
2、再寫一個(gè)swig模塊定義文件如下
%module example
%{
#include "example.h"
%}
%include "example.h"
3、通過命令行運(yùn)行:$ swig -python -c++ example.i 如果是使用C源碼,則選項(xiàng):$ swig -Python example.i
這樣會(huì)創(chuàng)建兩個(gè)不同的文件:example_wrap.cxx(如果用c源碼是example_wrap.c),和python文件example.py。
4、使用python.distutils生成模塊動(dòng)態(tài)庫(kù)python自帶一個(gè)distutils工具,可以用它來創(chuàng)建python的擴(kuò)展模塊。使用它也很簡(jiǎn)單,只需要先定義一個(gè)配置文件,通常是命名為setup.py,如下:#!/usr/bin/env python
"""
setup.py file for SWIG C\+\+/Python example
"""
from distutils.core import setup, Extension
example_module = Extension('_example',
sources=['example.cpp', 'example_wrap.cxx',],
)
setup (name = 'example',
version = '0.1',
author = "www",
description = """Simple swig C\+\+/Python example""",
ext_modules = [example_module],
py_modules = ["example"],
)
注:swig生成的擴(kuò)展模塊對(duì)象名必須使用python模塊名并在前面加上下劃線_,剛才我們通過swig生成的python文件是example.py,所以這里的模塊對(duì)象名必須是'_example',否則無法順利編譯。5、編譯
命令行中將當(dāng)前工作目錄切換到文件example.cpp,example_wrap.cxx,example.py,setup.py所在的目錄,然后輸入以下命令:python setup.py build_ext --inplace會(huì)在本目錄下生成_example.pyd模塊。
6、測(cè)試import examlpeexample.Example().say_hello()注:如果導(dǎo)入模塊失敗,需要將模塊所在路徑添加到sys.path中,在次導(dǎo)入就會(huì)成功
posted on 2016-08-18 11:20
王海光 閱讀(4697)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
腳本