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

快乐虾

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"

测试一下:

技术分享


调试它:

技术分享


搞定!















??

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。