VS 使用swig 教程

来源:互联网 发布:php json null 编辑:程序博客网 时间:2024/04/30 04:28

1. 首先在www.swig.org下载swig安装包。解压安装包到任意路径,路径中最好不要带空格。


2. 制作源文件和swig接口文件,我的文件如下

 

3. 配置Visual Studio 的文件路径,也最好把文件拷到不到空格的路径下,VS中的配置方法:
VS2008: 工具-》选项-》项目和解决方案-》VC++目录里添加
VS2010:
建的项目-》右击-》属性-》VC++目录
难道要每个项目都设置一遍常用的Include吗?答案是,不用
找个项目的属性管理器-》Debug|Win32-》Microsoft.Cpp.Win32.user-》右击-》属性-》看到了吧...
4.新建一个dll空工程
新建一个Win32 Console Application工程,在向导中点next,Application type选择DLL,在Additional options中选择Emppty project
 
5.向头文件和源文件中加入自己写的C++接口代码
例:加入FunTest.h
int AddTest(int x, int y)
{
 return x+y;
}
6.在工程内加入一个.i文件
例:加入SwigTest.i
%module SwigTest2
%{
#include "FunTest.h"
%}
 
int AddTest(int x, int y);
 
//解释下:
%module标记用于定义SWIG生成的模块的名称,%{%}标记中的内容会被一字不差地插入SWIG自动生成的文件xxx_wrap.cxx中,其中xxx代表用%module指定的模块名称
 
7.配置使生成的dll文件自动改成pyd文件
右击工程-》属性-》链接器-》输出文件里 把$(OutDir)/$(ProjectName).dll改成$(OutDir)/_$(ProjectName).pyd
注:要如果生成的是SwitTest.dll 要把它改成_SwitTest.pyd, 前面有个‘_’啊, 这里配置完就会自动改了
 
8. 配置自动编译.i文件
.i文件右击-》属性-》自定义生成步骤-》【命令行】输入编译命令C:/swigwin-2.0.2/swig -c++ -python $(InputPath)
-》【输出】输入$(InputName)_wrap.cxx;
 
-----------------------------------------------------------------------------------------------------------------------------------------
这样运行就会调用命令行自动编译.i文件,生成xxx_wrap.cxx和xxx.py
上述例子生成:SwigTest_wrap.cxx和SwigTest.py
报错....  这是正常情况
因为我也不知道怎么自动把声的.cxx自动加入工程...
然后手动把xxx_wrap.cxx 加入工程, 再运行一次
OK!!!
debug文件夹下生成 _xxx.pyd  和 _xxx.lib
上述例子生成的是_SwigTest.pyd 和_SwigTest.lib
把SwigTest.py和_SwigTest.pyd 放到一起, 写个测试py
# a.py
import SwigTest2
print SwigTest2.AddTest(1, 4)
运行正确。。。。
另: 说了那么多,运行错了一次, 又运行一次, 其实就是第一次编译.i接口文件第二次把.cxx加入工程后, 才正在编译运行
也就是说,我们可以把FunTest.h和SwigTest.i 放一块, 用swig编译下, 生成SwigTest_wrap.cxx和SwigTest.py
然后再新建dll工程 ,把FunTest.h、SwigTest.i、SwigTest_wrap.cxx编译运行就可以了, C++编译中只用到了这三个文件。
参考:http://topic.csdn.net/u/20090303/21/72a4fa1d-9146-4fc2-8555-8db2304d02df.html
          http://hi.baidu.com/kxw102/blog/item/32e2dfcbf027e694c817689b.html
原创粉丝点击