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

qt与matlab混合编程调试问题,跪求过来人指导

6
回复
10041
查看
[复制链接]
累计签到:336 天
连续签到:1 天
来源: 2016-6-22 20:41:35 显示全部楼层 |阅读模式
20Qter豆
本帖最后由 吴雨辰 于 2016-6-22 20:41 编辑

之前在论坛里找到过一个前辈写过的关于qt和matlab混合编程的资料,是通过qt调用matlab的.m脚本文件生成的动态库(显示和隐式调用)以及生成的.exe文件,讲的也很详细,根据他的教程在我的环境下(win8.1 qt5.3.2 matlab2012b)也成功的重现了,但是这个demo是不需要传递参数给动态库的,也不需要参数返回;于是我自己写了一个简单的y=a+b的.m脚本文件,按照之前的教程又来了一遍,到调用函数之前一切都okay。但是由于有参数的传递和返回,我们就需要借助mxArray(一个matlab能识别的参数类型)来传递参数和接收返回值:其写法也是参考网上的,如下所示:
double _x[5 = {1, 2}; //输入数组      ---------------------------------------------------------------------------------------------------------      
double _y[5]; //输出数组            
mxArray* x = mxCreateDoubleMatrix(1, 2, mxREAL);//创建1*5矩阵            
memcpy(mxGetPr(x), (void*)_x, sizeof(_x)); //拷贝输入数据            
mxArray* y = mxCreateDoubleMatrix(1, 5, mxREAL);//创建1*5矩阵            
ZAdd(1, &y,2,x); // 执行功能函数,即m文件里的函数            
memcpy(_y, mxGetPr(y), sizeof(_y));//拷贝输出数据
但当编译的时候会报如下的错:
E:\Software_Practice\QtProject\Test3MatlabWithQT\mainwindow.cpp:45: error: undefined reference to `mxCreateDoubleMatrix_730_proxy(unsigned int, unsigned int, mxComplexity)'
E:\Software_Practice\QtProject\Test3MatlabWithQT\mainwindow.cpp:46: error: undefined reference to `mxGetPr_proxy(mxArray_tag const*)'
....
如果把以上都注释掉,其他部分都正常,动态库的加载,动态库函数指针的获取都没问题(我用的是动态库的显示调用)...
自己也查了好久,但他们说的库我都添加了的,pro文件如下所示:
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Test3MatlabWithQTTEMPLATE = app

SOURCES += main.cpp\        mainwindow.cpp
HEADERS  += mainwindow.h
FORMS    += mainwindow.uiDEFINES += __LCC__
INCLUDEPATH += E:/matlab2012B/extern/include
INCLUDEPATH += E:/matlab2012B/extern/include/win32
LIBS += -LE:/matlab2012B/extern/lib/win32/microsoft -llibmx
LIBS +=-LE:/matlab2012B/extern/lib/win32/microsoft -llibeng
LIBS +=-LE:/matlab2012B/extern/lib/win32/microsoft -llibmat
LIBS +=-LE:/matlab2012B/extern/lib/win32/microsoft -lmclmcr
LIBS +=-LE:/matlab2012B/extern/lib/win32/microsoft -lmclmcrrt
LIBS +=-LE:/matlab2012B/extern/lib/win32/microsoft -llibmex
OTHER_FILES += \    dllZAdd.dll
跪求过来人指导一下,已经找了好几天的原因了:(
谢谢~

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

使用道具 举报

累计签到:14 天
连续签到:1 天
2016-6-22 22:18:12 显示全部楼层
是64位的吧,我之前也是这个问题,后来我把需要用到的lib全部放到Qt的lib文件夹下,并用pragma comment包含用到的lib,用到的头文件也放到工程目录下。这样就不会报错了

点评

是64位的电脑... 我刚刚试了,还是不行~ 不是跟我系统有关吧,我是win8.1 64位的系统,装的是32位的matlab 和qt5.3.2  详情 回复 发表于 2016-6-23 09:21
是64位的电脑... 我刚刚试了,还是不行~ 不是跟我系统有关吧,我是win8.1 64位的系统,装的是32位的matlab 和qt5.3.2  详情 回复 发表于 2016-6-23 09:20
回复

使用道具 举报

累计签到:336 天
连续签到:1 天
2016-6-23 09:20:14 显示全部楼层
chenyixi 发表于 2016-6-22 22:18
是64位的吧,我之前也是这个问题,后来我把需要用到的lib全部放到Qt的lib文件夹下,并用pragma comment包含 ...

是64位的电脑...
我刚刚试了,还是不行~
不是跟我系统有关吧,我是win8.1 64位的系统,装的是32位的matlab 和qt5.3.2
回复

使用道具 举报

累计签到:336 天
连续签到:1 天
2016-6-23 09:21:22 显示全部楼层
chenyixi 发表于 2016-6-22 22:18
是64位的吧,我之前也是这个问题,后来我把需要用到的lib全部放到Qt的lib文件夹下,并用pragma comment包含 ...

是64位的电脑...
我刚刚试了,还是不行~
不是跟我系统有关吧,我是win8.1 64位的系统,装的是32位的matlab 和qt5.3.2
回复

使用道具 举报

累计签到:29 天
连续签到:1 天
2016-10-26 08:36:00 显示全部楼层
请问楼主解决了没,分享一下吧

点评

没有解决~ 暂且搁置了,应该是库的问题。  详情 回复 发表于 2016-11-14 21:07
回复

使用道具 举报

累计签到:336 天
连续签到:1 天
2016-11-14 21:07:12 显示全部楼层
xhong 发表于 2016-10-26 08:36
请问楼主解决了没,分享一下吧

没有解决~ 暂且搁置了,应该是库的问题。
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-1-7 15:13:23 显示全部楼层
楼主现在解决了吗?我也遇到了这个问题
回复

使用道具 举报

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

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