qt调用Matlab生成的C++动态链接库

qt调用Matlab生成的C++动态链接库

准备好动态链接库

用matlab生成好C++的动态链接库

pro文件

INCLUDEPATH += $$quote(C:/Program Files/MATLAB/MATLAB Runtime/v98/extern/include)
INCLUDEPATH += $$PWD/.
INCLUDEPATH += $$PWD/algorithm/.
INCLUDEPATH += $$PWD/custom_widget/.
INCLUDEPATH += $$PWD/dialog/.
INCLUDEPATH += $$PWD/curve/.

DEPENDPATH += $$PWD/.
DEPENDPATH += $$PWD/algorithm/.

LIBS += -L$$quote(C:/Program Files/MATLAB/MATLAB Runtime/v98/extern/lib/win64/microsoft)
LIBS +=  -llibmx -lmclmcrrt -llibmat -lmclmcr
LIBS += -L$$PWD/./algorithm/ -lDts
LIBS += -L$$quote(C:/Program Files/MATLAB/MATLAB Runtime/v98/runtime/win64)

其中要添加对应的路径,找到自己安装的matlab路径添加对应的

INCLUDEPATH += $$quote(C:/Program Files/MATLAB/MATLAB Runtime/v98/extern/include)
LIBS += -L$$quote(C:/Program Files/MATLAB/MATLAB Runtime/v98/extern/lib/win64/microsoft)
LIBS +=  -llibmx -lmclmcrrt -llibmat -lmclmcr
LIBS += -L$$quote(C:/Program Files/MATLAB/MATLAB Runtime/v98/runtime/win64)

同时也要添加对应路径的dll

LIBS += -L$$PWD/./algorithm/ -lDts

我这里是工程目录下的algorithm目录下的Dts.dll
同时也要将Dts.h的文件添加入工程中来。

调用注意

mclmcrInitialize();
mclInitializeApplication(nullptr, 0);
DtsInitialize();

首先要调起matlab运行支持库前2个函数是matlab自己的,最后的DtsInitialize()是自己生产的dll文件中带有的,基本和自己的dll文件名同名。

然后在程序中使用dll内的函数,例如:

mlfFlat();

最后使用完成后要调用结束matlab

DtsTerminate();
mclTerminateApplication();

mxArray使用:

mxArray* n  = mxCreateDoubleMatrix(1, 1, mxREAL);
memcpy(mxGetPr(n), polyfitTimesVector.data(), sizeof(double) * polyfitTimesVector.size());
mxDestroyArray(n);

先要给mxarray定义空间,然后用memcpy函数将QVector拷贝到其中,用完用mxDestroyArray释放mxarray。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt调用MATLAB引擎有多种方式。一种常见的方式是将MATLAB函数封装成.dll文件,然后在Qt平台上调用.dll文件实现。另一种方式是将MATLAB函数导出成.exe可执行程序,再在Qt平台上调用.exe可执行程序。还有一种方式是接在Qt平台上调用MATLAB Engine引擎,但这需要计算机上安装有MATLAB软件。\[1\] 在进行Qt调用MATLAB引擎的过程中,可能会出现执行交慢的情况。为了提高执行速度,建议不要关闭已经打开的MATLAB Command Window,下次启动时会更快一些。具体的数据传递和接收方法可以参考MATLAB官方文档。\[2\] 要在Qt平台上实现C/C++调用MATLAB函数的全流程,需要进行环境配置,并将MATLAB代码转换成C/C++代码和相关动态链接库。具体的步骤包括:基本调用方式介绍、环境配置、将MATLAB程序写成函数形式、配置MATLAB的C编译器,将.m文件转换成动态链接库、在Qt中添加MATLAB的依赖库和头文件搜索路径、在Qt中添加外部库、在Qt工程的头文件中添加生成MATLAB库的头文件、在Qt中编写使用DLL内函数的代码等。如果在实施过程中遇到问题,可以参考相关文档进行解决。\[3\] #### 引用[.reference_title] - *1* *3* [超详细基于Qt平台实现C/C++调用Matlab函数全流程](https://blog.csdn.net/m15279530607_163/article/details/129471386)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Qt 调用MATLAB引擎混合编程](https://blog.csdn.net/u010058695/article/details/121682716)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值