找回密码
 立即注册
收起左侧

Qt和MATLAB混合编程

25
回复
23521
查看
[复制链接]
累计签到:882 天
连续签到:3 天
来源: 原创 2015-4-23 16:09:36 显示全部楼层 |阅读模式
关于Qt和MATLAB混合编程的文章,百度上很少(google不了。。。),最近自己摸索整理了一份资料,在这里分享出来共同学习。因为文章太长,在这里就不贴出来了,有问题可以回帖讨论。。。

网盘地址:
http://pan.baidu.com/s/1dDvpu9r




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:597 天
连续签到:1 天
2015-4-23 17:07:47 显示全部楼层
虽然暂时用不到,但赞一个
回复 支持 反对

使用道具 举报

尚未签到

2015-4-23 17:54:41 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-9-1 21:27:30 显示全部楼层
谢谢。。。。。。。。。。。
回复 支持 反对

使用道具 举报

尚未签到

2015-9-23 00:14:08 显示全部楼层
刚好有用 谢谢·········································
回复 支持 反对

使用道具 举报

累计签到:595 天
连续签到:1 天
2016-1-6 16:41:08 显示全部楼层
不错不错,赞一个,给有需要的人。
回复 支持 反对

使用道具 举报

累计签到:132 天
连续签到:1 天
2016-1-18 22:19:54 显示全部楼层
最近正好要用qt和MATLAB,谢谢楼主!!!!!
回复 支持 反对

使用道具 举报

累计签到:336 天
连续签到:1 天
2016-6-22 20:07:30 显示全部楼层
我在win8.1 QT5.3.2 MATLAB2012B环境下,运行楼主的程序没有问题,但我重新写了一个需要传递参数的一个函数后,显示调用该动态库,初始化该动态库什么都没问题,但是由于需要传参,所以需要通过mxCreateDoubleMatrix构造输入mxArray和输出mxArray,但是在编译的时候,会报以下错误,E:\Software_Practice\QtProject\Test3MatlabWithQT\mainwindow.cpp:45: error: undefined reference to `mxCreateDoubleMatrix_730_proxy(unsigned int, unsigned int, mxComplexity)'不知楼主有没有遇到这种问题,已经折腾了一天了:(

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

你这个思路可能不太对,matlab的函数应该在.m文件中写,然后导出库文件,在Qt完成传参和接收返回值,如果你想直接在Qt中matlab的函数,这可能就需要使用matlab引擎的方式,我文章里有提到  详情 回复 发表于 2016-6-23 20:28
回复 支持 反对

使用道具 举报

累计签到:882 天
连续签到:3 天
2016-6-23 20:28:06 显示全部楼层
本帖最后由 一叶知秋 于 2016-6-23 20:29 编辑
吴雨辰 发表于 2016-6-22 20:07
我在win8.1 QT5.3.2 MATLAB2012B环境下,运行楼主的程序没有问题,但我重新写了一个需要传递参数的一个函数 ...

你这个思路可能不太对,matlab的函数应该在.m文件中写,然后导出库文件,在Qt完成传参和接收返回值,如果你想直接在Qt中使用matlab的函数,这可能就需要使用matlab引擎的方式,我文章里有提到

点评

对对,我是这么干的,就是在matlab的.m文件里写了一个y=a+b的一个加法函数,把它编成了动态库,所以就需要两个输入参数,和一个返回参数么,然后就在Qt里构造mxArray数组来传递和接收参数啊,但是在调用mxCreateDoub  详情 回复 发表于 2016-6-24 09:18
回复 支持 反对

使用道具 举报

累计签到:336 天
连续签到:1 天
2016-6-24 09:18:03 显示全部楼层
一叶知秋 发表于 2016-6-23 20:28
你这个思路可能不太对,matlab的函数应该在.m文件中写,然后导出库文件,在Qt完成传参和接收返回值,如果 ...

对对,我是这么干的,就是在matlab的.m文件里写了一个y=a+b的一个加法函数,把它编成了动态库,所以就需要两个输入参数,和一个返回参数么,然后就在Qt里构造mxArray数组来传递和接收参数啊,但是在调用mxCreateDoubleMatrix()函数构造mxArray时,就提示我undefined reference to "mxCreateDoubleMatrix_730_proxy"的错误,看上去好像是库链接的问题,但是我感觉该用到的库我都添加了啊... :(  不知道啥问题...
回复 支持 反对

使用道具 举报

尚未签到

2016-8-5 15:58:46 显示全部楼层
吴雨辰 发表于 2016-6-24 09:18
对对,我是这么干的,就是在matlab的.m文件里写了一个y=a+b的一个加法函数,把它编成了动态库,所以就需 ...

请问解决了吗,我也遇到同样问题。
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2016-10-19 11:07:37 显示全部楼层
我也遇到了和楼上一样的问题,Qt调用MATLAB,传递参数的时候就会报错,有解决掉这个问题的大神吗?求指导
回复 支持 反对

使用道具 举报

累计签到:29 天
连续签到:1 天
2016-10-26 08:32:58 显示全部楼层
shy 发表于 2016-10-19 11:07
我也遇到了和楼上一样的问题,Qt调用MATLAB,传递参数的时候就会报错,有解决掉这个问题的大神吗?求指导:' ...

我 也遇到同样的问题。我是Qt4.8.5,matlab2012b。win764位
另我在调用楼主的lib和dll时,没有任何报错,但程序总是运行不起来,自动退出。不知什么原因。
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2016-11-1 09:58:12 显示全部楼层
你得也是需要传参的吗
回复 支持 反对

使用道具 举报

尚未签到

2016-11-11 20:29:26 显示全部楼层
环境:matlab2012b,编译器lcc-win32
这个问题是因为lcc编译出来的是C语言库,在使用时找不到那些函数,是因为我们在Qt中编译的是g++,编译c++的,那些头文件中的函数会找不到,因为命名方式有差异,我现在是把mclmcrrt.h文件中64行改为#define EXTERN_C extern "C",可以编译通过,运行时有效果,但是后台会报一些异常,就是说matlab编译的dll文件是否可以在c++中用
回复 支持 反对

使用道具 举报

尚未签到

2016-11-11 20:34:04 显示全部楼层
我最近也要在qt中调用matlab程序,不知道这种方式可不可行,还是要把matlab程序用C++重写,是关于图像处理的,各位有这方面的经验吗
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2016-11-18 15:43:24 显示全部楼层
xhong 发表于 2016-10-26 08:32
我 也遇到同样的问题。我是Qt4.8.5,matlab2012b。win764位
另我在调用楼主的lib和dll时,没有任何报错, ...

我的问题解决了,还是环境的问题,环境配置对了,就可以了
回复 支持 反对

使用道具 举报

累计签到:29 天
连续签到:1 天
2016-11-24 14:21:15 显示全部楼层
楼上分享下环境该怎么配嘛
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2016-12-6 11:04:15 显示全部楼层
我用的是vs-qt组件,借助vs2013,系统是64位的
回复 支持 反对

使用道具 举报

累计签到:894 天
连续签到:1 天
2016-12-6 23:43:31 显示全部楼层
支持楼主!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了