QT与matlab联合编译

记录一次QT与matlab联合编译尝试

最近需要在qt下实现一个插值函数的编写,考虑到编程工作量大,而matlab中自带这个函数,于是考虑将matlab中的该函数编译成库文件在qt中调用,下面记录一下我的实现步骤,可能不是很详细,我尽量把我遇到的问题写出来供大家参考。
本人编程基础一般,有什么说的不对的地方大家见谅。

选用软件

1.matlab32位
2.qt5.10.1 MingW32位版本
3.VS2012
值得注意的是,matlab和qt的位数要统一,我用的都是32位的。

1.matlab生成

1.!mcc
mcc是matlab中将.m文件编译成c/c++文件的命令,输入!mcc验证你的matlab能否使用这个命令(大概是这么个作用,我也不是很确定)。
如果你的matlab没有破解完全,输入!mcc后会报错,这时候可以去网上下载一个叫MATLAB R2014a Patch的软件(其他版本的matlab有没有我不知道),按它的步骤跑一遍即可,!mcc执行通过后,matlab命令行显示如下:
在这里插入图片描述
2.mbuild -setup -v
这是matlab寻找可用c/c++编译器的过程,输入-v可以查看它的详细查找步骤,这里需要你安装了某个版本的vs以及windows SDK,值得注意的是,vs的版本不能高于matlab,也就是说matlab2014不能用vs2015(实在想用似乎也有解决办法,可以自己去查一查),另外需要修改一下注册表设置,详细步骤请参考:
解决matlab不能识别vs编译器问题

3.库文件生成
两种方法,一是直接使用mcc命令,二是用matlab的工具箱(deploytool),这里推荐用第一种方法,工具箱有时候打包时会报错,而且还查不到解决方法= =。
将matlab的路径设置在你想编译的.m函数所在路径,如果你编译的.m函数中还调用了别的函数,你需要把所有的.m文件都放在一个文件夹下。比如你在A.m中调用了B函数,那你需要把A.m,B.m都放在一个文件夹下。
然后,在命令行窗口输入:
mcc -W cpplib:(函数名) -T link:lib (函数名).m
然后会在该文件夹下生成相应的库文件,我们需要的是.dll,.h和.lib文件。

2.QT调用

qt调用起来感觉还挺麻烦,先是将上面的三个文件拷在qt的工程文件夹下,然后再把dll文件放在build之后的debug文件夹下。
然后就主要是pro文件的修改,感觉要贴不少图,比较麻烦,我这里就不详细说了,后续有时间的话再来补偿,贴一下我的pro文件的截图吧。
主要是路径的设置
然后加入这句话:

DEFINES += __MW_STDINT_H__

这一段是通过添加外部库,然后系统自动产生的
然后就是在cpp文件中调用函数,在matlab中编程成c++文件时函数名发生了改变,所以你需要用一个软件去查看dll文件的内容,然后用resovle函数重命名一下。
在这里插入图片描述
然后再去了解一下mwarray(通过这种方式产生的函数,输入和输出参数都是mwarray类),就基本可以实现联合编译了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值