首页 > 编程语言 > 详细

vs2013在图像处理中的应用(8):用SWIG自动包装C/C++接口

时间:2015-05-21 22:37:48      阅读:388      评论:0      收藏:0      [点我收藏+]

快乐虾

http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)

欢迎转载,但请保留作者信息



很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境。在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境。


接下来尝试用SWIG自动将C/C++的接口封装为Python可用的pyd,仍以之前的阶乘代码为例。


首先从swig.org下载swig-win-3.0.5,里面已经包含了swig.exe,将之解压缩到C:\Python27\swigwin-3.0.5,再将此目录添加到PATH环境变量中。


PyExt工程中添加一个PyExt.i的文件,内容如下:


/* File : PyExt.i */
%module PyExt

%inline %{
int fact(int n);
%}

将着将PyExt.i配置为自定义生成:

技术分享


配置生成步骤:

技术分享


Swig自动生成的PyExt.cpp中定义了模块的输出函数:


/*-----------------------------------------------
              @(target):= _PyExt.so
  ------------------------------------------------*/
#if PY_VERSION_HEX >= 0x03000000
#  define SWIG_init    PyInit__PyExt

#else
#  define SWIG_init    init_PyExt

#endif
#define SWIG_name    "_PyExt"

可以看到SWIG生成的名字带了_,与我们的项目名称不符,修改它,去掉下划线:

/*-----------------------------------------------
              @(target):= _PyExt.so
  ------------------------------------------------*/
#if PY_VERSION_HEX >= 0x03000000
#  define SWIG_init    PyInit_PyExt

#else
#  define SWIG_init    initPyExt

#endif
#define SWIG_name    "PyExt"

测试一下:

技术分享


调试它:

技术分享


搞定!















??

vs2013在图像处理中的应用(8):用SWIG自动包装C/C++接口

原文:http://blog.csdn.net/lights_joy/article/details/45896481

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!