2014-01-15 102 views
-1

如何從GTK + 2 C代碼調用內置的matlab/octave函數。我知道如何通過Mex文件從C代碼中調用八度函數,但我不知道如何從GTK + 2 C代碼調用matlab/octave函數。是否可以使用Mex文件從GTK + 2 C代碼調用matlab/octave函數。假設我想使用GTK + 2 C代碼來顯示使用matlab/octave函數添加兩個數字的結果。我在互聯網上搜索,但沒有找到我在找什麼。我不知道如果我嘗試從MATLAB /八度如何編譯爲GTK所需的標誌+ 2將被添加如何從GTK + 2調用matlab/octave函數C代碼

我張貼這種代碼可以請你告訴我怎麼編譯它沒有錯誤

當我嘗試使用mkoctfile --mex addition_GUI.c錯誤編譯它發生addition_GUI.c:1:20: fatal error: gtk/gtk.h: No such file or directory compilation terminated.

這裏是代碼

#include<gtk/gtk.h> 
#include "mex.h" 

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 
{ 
mxArray *in[2], *out[1]; 

in[0] = mxCreateDoubleScalar(1); 
in[1] = mxCreateDoubleScalar(2); 

mexCallMATLAB(1, out, 2, in, "addition"); 
mexCallMATLAB(0, NULL, 1, out, "disp"); 

mxDestroyArray(in[0]); 
mxDestroyArray(in[1]); 
mxDestroyArray(out[0]); 
} 
    void static call(GtkWidget *widget,gpointer data) 
{ 
g_print("\n%s\n",gtk_entry_get_text(GTK_ENTRY(data))); 
gint a=3; 
gint b=2; 
gint x; 
x=a+b; 
char y[4]; 
    sprintf(y, "%d", x); 
    gtk_entry_set_text(GTK_ENTRY(data),y); 
} 

    int main(int agrc, char *agrv[]) 

{ 
gtk_init(&agrc,&agrv); 
GtkWidget *entry,*window,*button,*hbox; 

window=gtk_window_new(GTK_WINDOW_TOPLEVEL); 
g_signal_connect(window,"delete-event",G_CALLBACK(gtk_main_quit),NULL); 

hbox=gtk_hbox_new(0,0); 
gtk_container_add(GTK_CONTAINER(window),hbox); 
button=gtk_button_new_with_mnemonic("ADD"); 
entry=gtk_entry_new(); 
const char* sum="3+2"; 
gtk_entry_set_text(GTK_ENTRY(entry),sum); 
g_signal_connect(button,"clicked",G_CALLBACK(call),entry); 
g_signal_connect(entry,"activate",G_CALLBACK(call),entry); 



gtk_box_pack_start(GTK_BOX(hbox),button,0,0,0); 

gtk_box_pack_start(GTK_BOX(hbox),entry,0,0,0); 

gtk_widget_show_all(window); 
gtk_main(); 
return 0; 

} 
+1

你甚至嘗試過任何東西嗎?或者你只是希望有人在這裏爲你工作? –

+0

@EliasVanOotegem我已經嘗試從C代碼mex文件調用八度函數,並且我成功了,但是我不知道如何編譯它爲GTK + 2代碼 – user3132152

+0

@ user3132152:我認爲你在這裏混淆了事情; MEX/OCT文件(用C/C++編寫)只能由MATLAB/Octave調用。根據我的理解,您正在尋找與從獨立C/C++程序調用MATLAB/Octave相反的方法,我在下面的答案中已經給出了答案... – Amro

回答

相關問題