独立的matlab exe不起作用
Posted
技术标签:
【中文标题】独立的matlab exe不起作用【英文标题】:stand alone matlab exe does not work 【发布时间】:2014-12-04 07:10:07 【问题描述】:我有一个可以工作的 MATLAB 代码,但是当我将它转换为 exe 时,它给了我一个错误,说它找不到我在该代码中运行的 m 文件。这是代码。
clear all
str = sprintf('MyInput.txt');
fp = fopen(str,'r');
N= fscanf(fp,'%d',1)*2;
for i=1:N
a=sprintf('phtoh0_%d',i);
b=sprintf('phtoh0_%d.mat',i);
run(a);
save(b)
clearvars -except N fp str
end
错误是找不到 phtoh0_1。 任何帮助表示赞赏。
【问题讨论】:
您确定phtoh0_1
与您的可执行文件在同一个文件夹中吗?
是的,它们在同一个文件夹中。
【参考方案1】:
您不能将run()
用于已编译的 Matlab 代码。因为它是一个动态调用,Matlab 编译器不会看到对您正在调用的函数的依赖,所以它不会被拾取进行编译。您需要将其更改为函数并使用显式引用、编译器编译指示或编译器选项来强制将其包含在编译代码中。然后使用str2func
而不是run
将其作为常规函数调用。
即使您在编译后的 exe 所在的目录或 cd'ed 目录中获得纯 Matlab phtoh0_1.m
文件,编译后的 Matlab 程序也不会运行它,除非它包含在原始编译中。 Matlab 组件运行时将拒绝运行未混淆的 Matlab 代码。
【讨论】:
如果我将 phtoh_1.m 转换为 EXCEL 文件并尝试使用 xlsread 从不同的目录读取它,那么 MATLAB 代码也可以工作,但 exe 不能,并且在同一个程序中 xlswrite 可以工作。我不明白这个问题。以上是关于独立的matlab exe不起作用的主要内容,如果未能解决你的问题,请参考以下文章
PlayFunction 在 DLL 中不起作用,但在独立 exe 中起作用 [重复]