QTcreator&Matlab混合编程

Matlab&Qtcreator混合编程总结

 

因为项目的需要这两日一直在摸索matlab与qtcreator混合编程的东西,期间遇到过很多的问题,在此进行一个总结,希望能够帮到后面有需要的人。

  1. 环境:Windows10 64位、Qtcreator5.7 32位、Matlab2014b 32位(注意:这里在使用Qtcreator和Matlab是要求使用相同位数的版本,我之前用的是64位的Matlab2010b和32位的Qtcreator结果一直都出错,提示我需要引用的.DLL(动态链接)文件中的函数无定义);
  2. 工具安装:Qtcreator的安装我就不多说了这个很简单,关于Matlab2014b的安装需要说明一下,首先给大家提供两个拥有庞大资源的两个微信公众号(不是打广告),里面有很多的平时学习及开发所使用到的工具,而且更好的是还有相应的版本的安装教程,第一个: “哏儿都校园”;第二个:“软件安装管家”;我使用的23位Matlab2014b的资源就是从第一个微信公众号中获取的,但是在使用该公众号提供的安装指南出现了一些问题,现在就将这些问题一次罗列出来:

(1)在使用管理官身份打开“setup应用程序”时出现了一个错误:大概意思是“在D:\Matlab2014b\bin..\..\..文件中的msvcr110.dll文件没有被指定在Windows运行或者包含错误,请……”

对于这个问题我在网上查找了很久都没有能够解决,就在快要放弃这个版本去下另外一个的时候我试了一下把提示在该文件夹下的该文件剪切出来在去运行“setup应用程序”,竟然刚刚的问题解决了,哈哈哈…太巧了,好吧,这个问题就这样解决了,至于具体的什么原理啊,我还真不清楚,反正及这样稀里糊涂的解决了。

(2)在后续安装的时候按照指南选择我已有我的许可证的文件安装秘钥,输入20个1“11111111111111111111”,在点击下一步的时候先该秘钥无效,竟然会无效?什么鬼?我又去核对了一下我输入的

1的个数是否是20个,确认无误,当时心里很烦躁,又不能用,我立马想起还有其他版本的Matlab的安装指南,我便去了“软件安装管家”微信公众号的Matlab2015b的安装指南,令人兴奋的是它的秘钥不是20个1,而是:09806-07443-53955-64350-21751-41297,我便复制粘贴上去了,点击下一步,OK没有问题,就这样等到后面安装成功了,没有出现其他的问题了,最后配置一下Matlab和Qt的环境,这样工具就准备好了,接下来就正是开始混合编程。

3、        混合编程:

           (1)建立.m文件,写function

            function y = myFunc( )

% a test for qt and matlab mixed program

% Detailed explanation goes here

x = 0:0.01:25;

y = -x.^2 + 4 * x + 450;

plot(x, y, 'LineWidth', 2);

end

 

           运行的结果如下图:

 

 

 

 

(2)设置编译环境:使用mex –setup然后选择:mex -setup C++;将运行位置更换到该m文件所在的文件,再使用命令mcc -W lib:libmyFunc -T link:lib myFunc.m,稍微等一会儿便会生成如下图所示的一些文件:

 

(注:可以使用DependencyWalker来查看.dll文件中的一些内容,在这一步可能有些人还会编译器无法设置的问题,这里我就不提了,大家可以去参考其他的博客进行解决,有很多的解答)

(3)使用Qtcreator建立工程,我建立时选择了Application然后使用了QT Widgets Application,后面再命名该工程(我的命名Test)。

在界面上添加一个Push Button按钮,并在头文件中添加一个QLibrary 的变量m_lib(后面要用);.pro文件中添加:

INCLUDEPATH += D:/Matlab2014b/extern/include

INCLUDEPATH += D:/Matlab2014b/extern/include/win32

LIBS+=-LD:/Matlab2014b/extern/lib/win32/microsoft-llibmx

DEFINES += __MW_STDINT_H__

(这个要根据自己的Matlab具体的安装位置来修改。)将之前Matlab生成的文件.h和.lib拷贝到Qt工程中,将.dll拷贝到debug文件夹中,再在.pro文件中单击右键选择添加库->外部库->选择.lib文件添加,在工程中的头文件中添加.h文件;然后再之前添加的Push Button按钮转到槽函数中进行代码编写,下面贴出我的代码:

 

(网上可以找到相关的代码,我也是复用的。)

然后构建项目运行,如果没有什么问题应该是这样的结果:

期间参考了一些博客:

https://blog.csdn.net/u012955739/article/details/74999408

https://blog.csdn.net/liukai0908/article/details/8518057

https://blog.csdn.net/HongAndYi/article/details/79433623

http://blog.sina.com.cn/s/blog_7fbe52890102wk9k.html

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值