MATLAB和VS2010的混合编程需要注意的问题

接上一篇文章吧,虽然上一篇距离现在几个月了。2015年第一发。

对于BM3D算法,在作者的主页他们给出了MATLAB的代码,在MATLAB上跑了一下,果然很好很强大,同时也跑了跑实验验证了一下linux下的C++版代码,需要装libpng和fftw3这两个库。后来在师兄的帮助下实现了GPU版的程序,可以做到每秒5-10帧左右,又大幅的提升了算法的速度,但是由于自己太懒,于是想到借用MATLAB来进行对图像的IO操作,在不同域之间做变换以及计算性能。 因而在去年底和今年初的一个月时间摸索了一下MATLAB和VS2010混合编程互相调用的方法,写下来以纪念一下走过的弯路。虽然网上其他的地方都已经有很多格式的有关于此的教程,但是我在搜索的过程中发现这些教程要么就不全要么就一笔带过,这篇文章打算从自己实际项目的角度出发,写一写遇到的问题以及使用的方法。

一、在VS2010中调用MATLAB的方法:

1. 先是配置MATLAB,打开MATLAB 我用的是R2011b,在命令行中输入:
      mex -setup
  然后根据提示选择编译器,我用的VS2010,然后一直选择y,完成之后,再在命令行中输入:    
      mbuild -setup
  然后根据提示选择编译器,我用的VS2010,然后一直选择y,完成之后,MATLAB端就配置好了
2. 再配置VS2010,新建一个工程,比如matlab_demo,在工程名右键单击,选择: 属性(property) --> 
       1). VC++目录 --> 
         (1). 包含目录 (加入matlab的外部接口目录, 比如 我的是:D:\Program Files\MATLAB\R2011b\extern\include)    
         (2). 库目录 (加入matlab的库目录, 比如 我的是:D:\Program Files\MATLAB\R2011b\extern\lib\win64\microsoft,注意需要根据操作系统位数选择win64还是win32)
       2). 链接器(linker) -->输入(input) --> 附加依赖项(Additional Dependencies)
         添加三个依赖库:libmat.lib        libeng.lib       libmx.lib
         (这三个库都在D:\Program Files\MATLAB\R2011b\bin\win64中)
   
3.在源代码中新建一个.cpp文件,加入代码(见下文)就可以调用了  
到这里配置完毕
二、在VS2010中调用MATLAB的代码
1. 第一步是添加MATLAB在VS中的头文件以及lib库:

#include "matrix.h"
#include "libr2y.h"
#include "libtrans.h"
#include "mclmcr.h" 
#include "mclcppclass.h"
#pragma comment( lib, "mclmcr.lib" )
#pragma comment( lib, "libmx.lib" )
#pragma comment( lib, "libmat.lib" )
#pragma comment( lib, "mclmcrrt.lib" )
#pragma comment( lib, "libtrans.lib")
#prag
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值