2014-01-15 5 views
-1

GTK + 2 C 코드에서 내장 matlab/octave 함수를 호출하는 방법. 어떻게 C 코드에서 Mex 파일에 의해 옥타브 함수를 호출할지 모르지만 내가 어떻게 GTK + 2 C 코드에서 matlab/octave 함수를 호출 할 수 있는지 모르겠다. GTK + 2 C 코드에서 Mex 파일을 사용하여 matlab/octave 함수를 호출 할 수 있습니까? 내가 MATLAB/옥타브 함수를 사용하여 두 숫자의 추가 결과를 표시하는 GTK + 2 C 코드를 사용하여 GUI를 만들고 싶다고 가정 해 봅시다. 나는 인터넷에서 검색했지만 찾던 것을 찾지 못했습니다. 내가 어떻게 MATLAB/옥타브에서 2GTK + 2 C 코드에서 matlab/octave 함수를 호출하는 방법

내가 어떻게 오류없이 컴파일 말해 주실 래요이 코드를 게시하고 추가됩니다 + GTK에 필요한 플래그를 컴파일하려고하면 나는 확실하지 않다

내가 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

답변

관련 문제