How Can I create exe file of GUI program (.fig, .m)
Mostra commenti meno recenti
Hi I have GUI matlab program (with some functions and csv file inside which I call) and I want to convert to exe. I use 'deploytool' and application compiler to do that. I read some parameters from csv file so if I change csv file, the output must change too. But it seems that it does not depend on csv file and it run with some default parameters from the previous run.
my second question is that if I have to creat exe files for all the functions which I call inside the main code or not? Thanks
Risposte (1)
Adam
il 15 Giu 2018
0 voti
For the second question, no, you create an exe for your top level function and it will bring in all the dependencies it needs (though you do have to add some yourself sometimes - e.g. if you call functions using str2func or some other method by which a string turns into a function.
The first question is impossible to answer without a lot more information - e.g. does it work fine before it is deployed? Are you using full file paths rather than relative file paths? How are you initialising the GUI, what code are you running when the csv file changes? etc
10 Commenti
hoda kazemzadeh
il 17 Giu 2018
Modificato: hoda kazemzadeh
il 17 Giu 2018
hoda kazemzadeh
il 17 Giu 2018
Walter Roberson
il 17 Giu 2018
Using relative paths for a deployed executable is wrong for any user-supplied file, unless the executable is deliberately figuring out where the user files are and cd'ing to there. Please review the blog link I posted.
hoda kazemzadeh
il 17 Giu 2018
Walter Roberson
il 17 Giu 2018
while true
[filename, filedir] = uigetfile('*.csv', 'Select a csv');
if ~ischar(filename); error('User cancel'); end
fullname = fullfile(filedir, filename);
if ~exit(fullname, 'file')
uiwait(msgbox('That file does not exist ??'));
else
fid = fopen(fullname, 'r');
if fid < 0
uiwait(msgbox('File could not be opened!'));
else
break;
end
end
end
%if we got here then fid is the identifier of a readable file
hoda kazemzadeh
il 17 Giu 2018
Walter Roberson
il 17 Giu 2018
while true
[filename, filedir] = uigetfile('*.csv', 'Select a csv');
if ~ischar(filename); error('User cancel'); end
fullname = fullfile(filedir, filename);
if ~exist(fullname, 'file')
uiwait(msgbox('That file does not exist ??'));
else
break;
end
end
try
T = readtable(fullname);
catch ME
error('Could not read the file');
end
hoda kazemzadeh
il 17 Giu 2018
Adam
il 19 Giu 2018
You can save files to wherever you want if you have the file path and the folder in question has write permissions.
doc ctfroot
can be useful if you need to use a relative path in a deployed application, though you should wrap it in an
if isdeployed
block with an else to define your file path for non-deployed code if you don't wish to save relative to where ctfroot points for non-deployed code (which appears to be the Matlab install directory, which is not usually useful as a relative directory for your own files)
Categorie
Scopri di più su C Shared Library Integration in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!