环境 Visual Studio 2017
Qt 5.13.2 MSVC 2017 64-bit
Matlab 2019b
注意 matlab2019a不行,原因未知。在运行使用matlab2019a生成的dll时程序直接异常结束。
注意 Qt5.13.2 以及Qt5.14.1 ,如果电脑上的有道词典正在运行则会出现卡死情况。
Matlab生成.dll .lib .h 文件
1 准备好.m文件
2 在matlab中输入 mex -setup C++ 设置编译工具
3 在matlab中输入 deploytool 在图形化界面上进行编译 具体选择如图1所示。
图1 matlab图形化编译界面
4 待编译完成后会生成多个文件夹,只需要文件夹for_redistribution_files_only中的.dll .lib .h 文件。
Qt使用Matlab生成的库文件
1 Qt项目文件夹中新进lib文件夹和include文件夹
2 .h文件放在include文件夹中,.lib和.dll放在lib文件夹中
3 对项目添加库 lib
INCLUDEPATH += E:/Matlab/extern/include
LIBS += -LE:/Matlab/extern/lib/win64/microsoft -lmclmcr
LIBS += -LE:/Matlab/extern/lib/win64/microsoft -lmclmcrrt
LIBS += -LE:/Matlab/extern/lib/win64/microsoft -llibmx
以上即可实现matlab和qt的混合编程。
注意几点:
1.初始化函数一定要先调用。
2.初始化函数有点耗时。
3.初始化函数只能调用一次,多次调用只有第一次成功。而且一个exe进程只需要初始化一次就行。
4.函数中涉及中文的要转toLocal8bit。
5.大量的警告可以在pro文件中加入DEFINES += QT_DEPRECATED_WARINGS来屏蔽。
参考:
因篇幅问题不能全部显示,请点此查看更多更全内容