2012-12-31 68 views
0

我開發了一個Matlab GUI程序,它有四個編輯框&一個按鈕;當我使用Matlab軟件運行它時,我的應用程序可以正常工作,但在將其轉換爲exe文件(獨立版)後,按鈕不起作用,這意味着它不會在「結果」編輯框中顯示輸出。所以有什麼問題? 這裏是我的按鈕代碼:在matlab exe文件中的按鈕不起作用

function btnCal_Callback(hObject, eventdata, handles) 
a=str2num(get(handles.txbLow,'string')); 
b=str2num(get(handles.txbHi,'string')); 
f=get(handles.txbForm,'string'); 
x=0.5*((b-a)*(-1*(3/5)^0.5)+b+a); 
g=subs(f,'x',x); 
sum=(g)*(5/9); 
x=0.5*(b+a); 
g=subs(f,'x',x); 
sum=sum+(g)*(8/9); 
x=.5*((b-a)*((3/5)^.5)+b+a); 
g=subs(f,'x',x); 
sum=sum+g*(5/9); 
result=sum*((b-a)/2); 
set(handles.txbResult,'string',result); 
+0

你的意思是,如果你按下按鈕完全沒有任何反應?你可以讓exe做任何事情嗎?你是否在使用Matlab的同一臺計算機上使用exe文件? –

回答

0

首先,我有點困惑與

result=sum*((b-a)/2); % "result" is numeric 
set(handles.txbResult,'string',result); % "result" should be string 

接下來,就如同一個暗示。要「調試」你部署的代碼,試着從cmd啓動你的exe,在這種情況下,你會在那裏看到一些消息,他們可能會有所幫助。

0

你的'結果'需要是double,char或cell。你可以通過例如

set(handles.txbResult,'String',char(result); 

但是:我的Mac上有一個非常類似的代碼,它的問題完全相同。如果通過Matlab中的「運行」執行,應用程序運行得非常好,但是一旦我將它編譯爲standalone.app,按下按鈕時聽到這個錯誤聲音,沒有其他事情發生。

試圖設置「結果」變量爲「全球」幫助解決了我編寫的另一個程序(一個非常簡單的「計算a + b」的事情)的這個問題,但沒有提到稍微複雜的代碼(3而不是2個輸入和3個輸出,而不是1個)。

超級簡單的代碼,這是工作:

function pushbutton1_Callback(hObject, eventdata, handles) %the button to push 
...some code... 
global statText; 
set(statText,'String',char(output)); 

function text1_CreateFcn(hObject, eventdata, handles) %the outputfield 
global statText; 
statText = hObject;