MFC与Matlab编程总结 (以《Matlab与C/C++混合编程技术(第三版)》-刘维 第五章 生成DLL为例)

本文介绍了如何在MFC项目中调用Matlab编写的算法,通过将Matlab代码封装成DLL。首先,讨论了在32位系统中使用VC2010和Matlab 2010b/2012a进行混合编程的步骤,包括修改工程的包含目录和库目录。然后,详细描述了由于编译器版本不匹配导致的错误及其解决方法,即使用Matlab的mcc编译器重新生成DLL。最后,提醒新建工程时需要添加附加依赖项,并提供了相关参考资料。
摘要由CSDN通过智能技术生成
     近期要完成一个任务,把人脸超分辨率的算法集成在一个系统中,嵌入人脸库及字典集等。老板的要求是有比较好的界面,目前也只能是VS那一套了,前一段时间完成的项目是用的MFC,这次也就是用MFC来完成吧。但是问题是,以前写的人脸超分辨率的算法都是用Matlab写的,Matlab有非常好的矩阵计算能力,要想把算法在C++下重新实现,短时间内有点困难。那就把Matlab算法封装成DLL吧,Matlab基本上是用C写的,有比较好的兼容性,目前晚上也有不少关于C++与Matlab混合编程的资料。在图书馆找书的时候无意间找到了刘维的那本《精通Matlab与C/C++混合程序设计》(第三版),看着介绍不错,准备按照上面的方法做。
     昨天一整天(上午9:00--晚上12:00),外加前天一晚上(加班到凌晨一点),我几乎遇到了所有人遇到问题的集合,完美的走过了“大弯路”,今天早上终于搞定了这本书介绍的C++使用Matlab封装的DLL的例子。先不啰嗦那些弯路,直接介绍如何正确的使用这本书中的五章的第二个例子。
     注意:提前声明一下,这里我是在32位系统中完成的,至于64位系统,我尝试了两种,winXP64位,win8.1,都不行,不能识别DLL里面的函数,应该是有些库没加进去,或者这些库跟32位的有区别,尝试了win64那个文件夹也不行,暂时没有解决方案,待研究。另外,如果您是matlab2013b,抱歉,不能配置VC编译器(mcc),也就不能编译出自己的dll,lib,h文件。目前“市场”上所有破解Matlab2013b都不能配置编译器,至少我没有找到一个成功的案例,除非您是土豪,自己买的正版。
     没有在图书馆借到这本书的光盘,所以就在网上下载了这本书的源码。但是这些源码的文件名都有问题--每个文件名后面都多了一个下划线。这是错误的,需要写个批处理把这些文件重命名,去掉那个下划线,否则,不能加载解决方案的工程文件。不嫌麻烦就自己手动改,反正文件也不多。
     书中的例子都是用VC2010 + Matlab 2010b(也是7.14),而且书中的代码直接是工程文件,里面的包含目录(include)和库目录都需要根据自己机器实际安装目录修改(真蛋疼)。我对VC2010配置附加库还不是很熟悉,一般我都是按照OpenCV的方式配置,这本书中给的配置方式不太一样,详细的配置方式在书中195页有介绍。下面两张图是他的配置:
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值