fail to link the callback function after compiler

2 次查看(过去 30 天)
Hello ,I am so sorry I got a problem.My system is win7-64&Matlab2012a. Serval weeks can't solve it.After compiler success,none errors display in the command window.But when I run the exe,it said "undefined the function or ariable 'Diff_callback', when calculating uimenu error" ,How can I set the matlab? The M-function have no errors when running,and every GUI open success,but exe can't.Now Matlab 6.5 like so that too. note:I use mcc function to complier my M.

采纳的回答

Fan Sudi
Fan Sudi 2012-4-2
Hi Titus Once I used the command 'mcc -B sglcpp M' to complier a exe and 'mcc -x M' to a dll in matlab6.5.Now in new version,commands ware changed so that didn't get a good way to complier. Deploytool was unknown for me.Today I had a try,command line is suit for me I think.Thanks for your %#function,I get it.Next,I will go on hunting for a good way to make the command unlink its callbacks to complier a start exe.
  1 个评论
Titus Edelhofer
Titus Edelhofer 2012-4-2
Hi Fan,
your welcome. The last "hunt" I don't understand. Nevertheless, I guess the question is now answered?
Titus

请先登录,再进行评论。

更多回答(5 个)

Walter Roberson
Walter Roberson 2012-4-2

Fan Sudi
Fan Sudi 2012-4-2
function varargout = FMath(varargin) if nargin == 0 OldHandle = findobj('Style','figure','Tag','FMath'); if ishandle(OldHandle) close(OldHandle); end FMathHandle = figure ; set(FMathHandle,'Tag','FMath','Units','pixel','menubar','none','NumberTitle','off',... 'name','FMath计算器V 1.0','Resize','off','Visible','off','Position',[50 100 397 500]);%1120 755 397
generate_figure(FMathHandle);
%movegui(FMathHandle,'center');
set(gcf,'Visible','on');
elseif ischar(varargin{1})%&~isnumeric(varargin{end})
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:});
else
feval(varargin{:});
end
catch
disp(lasterror);
end
end
%--------------------------------------------------------------------------
function generate_figure(FMathHandle)
Maybe I have many many callback functions so that it is may not to add that for each one.After All,varargin is only a invisibility function.Once I used it in Matlab6.5,there's no this problem.serval months ago,I used 6.5,everything is fine.

Titus Edelhofer
Titus Edelhofer 2012-4-2
Hi Fan,
is Diff_callback in another file, i.e., Diff_callback.m? In this case you have to either follow Walter's advice or add Diff_callback.m (and the others) to your project file.
If Diff_callback is a subfunction that error should not happen ...
Titus

Fan Sudi
Fan Sudi 2012-4-2
Hi,Titus, thanks for your help. First when I complier my progect,they're in many files with setting the Path & save it in the matlab menu ,but failure.And then I copy them in one file,after that fail too.My main M function is FMath.m,with many menu labels calling the others.Diff_callback.m is one of them.I tried the method with %#function,it work,and success.It's very useful,supposed,I have many functions,it's impossible to do that add callbacks behind %#function.I didn't worried in Matlab6.5,but in 2012a....er,the other problem I forgot,I complier them but only make one exe with all the M functions in.May I complie the start function without linking the others,like a exe call the other dll.

Titus Edelhofer
Titus Edelhofer 2012-4-2
Hi Fan,
do you use command line or deploytool? For both you can add an entire folder during compilation: command line would be
mcc -m FMath -a folderWithAllMFiles
or, if you use the deploytool: click on the lower part on "add files/directories" and add the folder containing all m files to the project. For both ways you don't have to specify individual files but folders containing (possibly) many files.
Titus

类别

Help CenterFile Exchange 中查找有关 Interactive Control and Callbacks 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by