近期要完成一个任务,把人脸超分辨率的算法集成在一个系统中,嵌入人脸库及字典集等。老板的要求是有比较好的界面,目前也只能是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页有介绍。下面两张图是他的配置: