最近准备做一个项目,其中要用到很复杂的拟合算法等,自己去实现这些算法要很久,而手边有师兄已经写好的Matlab函数,如果可以实现利用Qt调用这些函数,那么工作量将会减少很多。而且这个看上去也很简单,至少博客文章上的貌似都很简单。
经过了一天多的实践,终于成功了!叹曰:为何别人那么容易就实现了,到了自己就大费周折呢?
总结思路和这一天所遇到的问题和我解决的办法如下:
思路:无非就是首先用matlab编写.m文件(实现预期功能),然后将其生成Qt可调用的库,然后用Qt调用这些库。这里是test所以.m文件很简单,就是求两个数的和。
软件版本:win10 ,matlab 2015b,Qt 5.2.1, VS2012 //经过测试,这里是VS2013 也没问题
(生成动态库时,高版本matlab和低版本的有所区别,一定要注意,我用的2015,方法大致同这篇文章 http://blog.youkuaiyun.com/sjhuangx/article/details/49305237)
遇到的问题1:
matlab生成C++ shared library失败。尝试的解决办法:
matlab升级:之前我的版本是2010b,识别不了我的VS2012和VS2013,很郁闷只能重装一个2015版的matlab。
选择不同的编译器,未果,这里只要matlab识别到了编译器即可。
后来我发现,直接勾选第一个是没问题的,生成的库完全可以使用,所以这里选第一个,问题解决!
使用刚生成的库我就不多说了,用到的文件有.h头文件,.lib文件和.dll文件。容我偷懒在贴一篇文章(http://blog.youkuaiyun.com/u012955739/article/details/74999408)
遇到的问题2:
缺少一系列的matlab头文件。尝试解决办法:
这明显示路径包含没对,但是我翻来覆去的看,INCLUDEPATH貌似没问题啊,于是就采取笨方法将头文件拷贝到工程目录下,刚开始说好的只有一个,然后弄过来有出来一个,就是那种“子子孙孙无穷匮也”的感觉。这样我没坚持到2分钟就不行了,直接告诉我弄完要死人!没帮法回头检查pro文件吧。这下发现问题了,然后我就在心里对Qt竖起了中指。
这是我之前的路径,一般第一眼看,这能有什么问题,不就是在include目录下复制过来么?对你没看错,我是复制过来的,但是Qt教导