想用Qt调用matlab的程序,由于matlab本身还要对STK进行互联操作,所以封装成.dll文件和直接调用Matlab引擎的方式不适用。
思路为使用QProcess模块调用执行程序文件,要求先将程序封装打包为exe程序,但是在封装打包过程中出现以下问题:
封装打包完成之后运行exe文件,弹出加载界面但是立马就能听到系统提示音,随后加载界面消失,没有任何的反应,也没有弹窗报错。
随后重新打包,发现打包过程出现警告提示,通过查询日志发现问题如下:
[警告: 函数 floor 与某个 MATLAB 内置函数同名。建议您重命名该函数以避免潜在的名称冲突。]
[警告: 函数 randi 与某个 MATLAB 内置函数同名。建议您重命名该函数以避免潜在的名称冲突。]
[警告: Your deployed application may error out because file or folder paths
not present in the deployed environment may be included in your MATLAB startup
file. Use the MATLAB function "isdeployed" in your MATLAB startup file to
determine the appropriate execution environment when including file and folder
paths, and recompile your application.
提示我部署的应用程序可能会出错,因为文件或文件夹路径部署环境中不存在的文件可能包含在MATLAB启动中文件。
使用MATLAB启动文件中的MATLAB函数“isdeployed”在包含文件和文件夹时确定适当的执行环境路径,并重新编译您的应用程序。
随后根据警告内容,我去系统环境变量的path中查询,发现确实出现了并不存在的路径,随后将其删除重新封装打包。但是还是出现上述问题。删除错误路径后的系统变量环境如下:
重新封装打包后我又去系统环境变量中查找是否多出了错误路径,但是这次并没有出现。
生成的exe文件依旧无法打开,请问这个问题该怎么解决呢?
使用的是Matlab2018b,已经下载了runtime插件,并且将程序封装为.dll文件以及调用matlab引擎两种方法都已经成功。
exe路径为测试程序同一文件夹目录下。
测试程序即为简单,为CSDN上一篇教程的示例程序,程序如下:
% close all
read = xlsread('1.xlsx');
xlswrite('2.xlsx',read+1);
求解!