QT5调用Matlab动态库传参为字符串类型处理方法

本文详细介绍了如何在MATLAB中配置function函数,使用mbuild-setup创建动态库,以及如何在QT项目中集成MATLAB库,包括头文件设置、类型转换等步骤,最终实现SampEnValAPI函数的调用。
摘要由CSDN通过智能技术生成

首先我们需要在matlab编译器中配置好function函数,示例如下:

function SampEnVal = sampentropy(filePath)

filePath为调用文件路径。具体函数实现内容省略。

然后在matlab终端输入mbuild -setup,如下图

然后使用APP中的Library Compiler输出动态库。

配置参数如下图:

点击Package即可得到。

将for_redistribution_files_only文件里的 .dll .h .lib三个文件分别放入Debug、源文件、与lib文件夹里。再在QT里添加外部库。

包含头文件以及.pro文件加入matlab调用外部库,其中F:/MATLAB/extern/lib/win64/microsoft为matlab安装路径。

#matlab
INCLUDEPATH +=F:/MATLAB/extern/include
LIBS += -LF:/MATLAB/extern/lib/win64/microsoft -lmclmcr
LIBS += -LF:/MATLAB/extern/lib/win64/microsoft -lmclmcrrt
LIBS += -LF:/MATLAB/extern/lib/win64/microsoft -llibmx

LIBS += -LF:/MATLAB/extern/lib/win64/microsoft -llibmex
LIBS += -LF:/MATLAB/extern/lib/win64/microsoft -llibmat
LIBS += -LF:/MATLAB/extern/lib/win64/microsoft -llibeng

初始化后即可使用动态库API函数。。

   if(!sampentropyInitialize()) { // 初始化,必须要使用
            qDebug() << "sampentropy init failed.";
            return;
        }
        qDebug() << "susss";

输出后的API函数形式如下:

void sampentropy(int nargout, mwArray& SampEnVal, const mwArray& filePath);

由此可见filePath本应传入为QString类型,但API定义为mwArray类型,由此需要进行类型转换。处理方法如下:

QString filePath = "F:/Data/data.txt";
// 将filePath转换为标准字符串
QByteArray byteArray = filePath.toLocal8Bit();
const char* stdFilePath = byteArray.constData();
// 将标准字符串转换为mwArray类型
mwArray mwFilePath(stdFilePath);
int nargout=1;  // 输出变量个数
//样本熵 SampEnVal
mwArray SampEnVal(mxDOUBLE_CLASS, mxREAL);
sampentropy(nargout, SampEnVal,mwFilePath);

即可得到样本熵SampEnVal。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lisan_离散

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值