标题:在Qt中调用Matlab函数的实现方法
摘要:本文介绍了如何在Qt应用程序中调用Matlab函数。通过使用Matlab引擎API和Qt的信号槽机制,我们可以方便地将Matlab的强大功能集成到Qt应用程序中。源码在文章末尾~需要自取哈~
最终效果如图所示:
Matlab:
1.通过MatLab编写加密解密函数:
注意:两个函数的传入传出参数都是一致的!mwarray img = f (imgpath,key )
2.运行查看Matlab效果:
3.将函数打包:
>>> !mcc
>>> mex -setup -v
识别到了 MSVC2017 !!!!
若没识别到,恭喜您!和我一样,要去查看别的教程修改注册表信息!
若没识别到,恭喜您!和我一样,要去查看别的教程修改注册表信息!
若没识别到,恭喜您!和我一样,要去查看别的教程修改注册表信息!
如果还是不行,建议重装...先装VisualStudio (我的是2022),装MSVC2017,装Qt5.14.2,配置Qt MSVC2017; 最后装Matlab;(这里卡了有三天~呜呜呜)
当然 ,重装VS放D盘还是会识别不到编译器~ 还得改~O(∩_∩)O
设置一下:
>> mex -setup C++
输入deploytool:
>> deploytool
点击后跳到另一个界面:
修改导出的文件名:
打包后会弹出对应的窗口
全部复制到工程目录下
Matlab部分,大功告成!!!
接下来开始Qt部分 :
先确认一下Qt 版本
MSVC 2017
编译器我们也选择 MSVC 2017的 这里我的是64位( 注意:编译的matlab库也是64位!)
这里可以选择外部库进行添加,也可以自己手打~
.pro文件
matlab相关:
#!!!!!!
#修改为 对应matlab文件目录
MATLAB_PATH = D:/MATLAB/R2018a/extern
INCLUDEPATH += $$MATLAB_PATH/include
INCLUDEPATH += $$MATLAB_PATH/include/win64
LIBS += $$MATLAB_PATH/lib/win64/mingw64/libeng.lib
LIBS += $$MATLAB_PATH/lib/win64/mingw64/libmat.lib
LIBS += $$MATLAB_PATH/lib/win64/mingw64/libmx.lib
LIBS += $$MATLAB_PATH/lib/win64/mingw64/libmex.lib
LIBS += $$MATLAB_PATH/lib/win64/mingw64/mclmcr.lib
LIBS += $$MATLAB_PATH/lib/win64/mingw64/mclmcrrt.lib
注意!!!!:
.pro中添加 .ctf (不然运行时会内存报错 一片红!!!!!)
.pro中添加 .ctf (不然运行时会内存报错 一片红!!!!!)
.pro中添加 .ctf (不然运行时会内存报错 一片红!!!!!)
DISTFILES += \
SDK/v2/generic_interface/encryDecryptImage.ctf
编写代码::初始化后 传入参数 即可使用!!!
//初始化加密解密函数
if (!encryDecryptImageInitialize()) {
qDebug() << "encryDecryptImageInitialize failed!" << endl;
}
传参说明:最好使用构造的方式进行,直接赋值操作会崩溃(我这里是的~┭┮﹏┭┮)
mwArray imagepath(file_str); // 替换为实际的图像路径
mwArray key_num(dekey); // 替换为实际的密钥序列路径
decryptImage(1, decrypted_image, imagepath, key_num);
图片支持拖拽导入 记得路径不要有中文!!!
Label 显示有点小问题,无伤大雅哈!
工程放这里咯:
git@gitee.com:tan-xiaoxi/en-decrypt-img-project.git