merlinzjl

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Matlab编译生成DLL,供QT调用

QT 5.15.2

Matlab R2022a

一、使用matlab生成dll

准备好matlab接口

命令行窗口敲入以下命令:

 

 弹出以下对话框

 

选择Library Compiler

弹出以下对话框

 

 

选择C++ Shared library

加入所有依赖的.m文件

点击package按钮

matlab 会为我们编译生成C++ dll

 

二、使用QT调用matlab生成的dll

.pro文件中加入以下配置

INCLUDEPATH += $$quote(D:/Program Files/MATLAB/R2022a/extern/include)
INCLUDEPATH += $$quote(D:/Program Files/MATLAB/R2022a/extern/include/win64)

INCLUDEPATH += $$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft)
DEPENDPATH += $$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft)
INCLUDEPATH += $$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64)
DEPENDPATH += $$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64)

win32: LIBS += -L$$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft) -llibmx
win32: LIBS += -L$$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft) -llibmat
win32: LIBS += -L$$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft) -llibmex
win32: LIBS += -L$$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft) -llibeng
win32: LIBS += -L$$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft) -lmclmcr
win32: LIBS += -L$$quote(D:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft) -lmclmcrrt

 

使用时 需要先调用xxxxInitialize函数用于初始化

double buf[1024];
memset(buf, 0, sizeof(double) * 1024);
mwArray t1(1024, 1, mxDOUBLE_CLASS);

数据保存到buf中

t1.SetData(buf, 1024);

将t1作为参数传入接口中。

 

未解决的问题:

debug模式下会卡死, release下可以跑通。

 

posted on   merlinzjl  阅读(1760)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2018-02-03 Visual Studio 2013 配置多个Release版本,并为每个版本配置预编译的宏
点击右上角即可分享
微信分享提示