как вызвать функцию matlab/octave из кода GTK+2 C

как можно вызвать встроенную функцию matlab/octave из кода GTK+2 C. Я знаю, как вызывать функции октавы из кода C с помощью файлов Mex, но я не знаю, как я могу вызывать функцию matlab/octave из кода GTK+2 C. можно ли использовать файлы Mex для вызова функции matlab/octave из кода GTK+2 C. предположим, я хочу сделать графический интерфейс с использованием кода GTK + 2 C для отображения результата сложения двух чисел с использованием функции matlab/octave. я искал в Интернете, но не должен был найти то, что я ищу. я не уверен, попытаюсь ли я скомпилировать его из matlab/octave, как будут добавлены флаги, необходимые для GTK+2

я публикую этот код, не могли бы вы сказать мне, как его скомпилировать без ошибок

когда я пытаюсь скомпилировать его с помощью 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;

}

person user3132152    schedule 15.01.2014    source источник
comment
Вы хоть что-нибудь пробовали? или вы просто надеетесь, что кто-то здесь сделает работу за вас?   -  person Elias Van Ootegem    schedule 15.01.2014
comment
@EliasVanOotegem Я пытался вызвать октавную функцию из mex-файлов кода C, и мне это удалось, но я не знаю, как скомпилировать ее для кода GTK+2   -  person user3132152    schedule 15.01.2014
comment
@ user3132152: Я думаю, вы здесь все путаете; Файлы MEX/OCT (написанные на C/C++) могут вызываться только MATLAB/Octave. Насколько я понимаю, вы хотите сделать противоположное вызову MATLAB/Octave из отдельной программы C/C++, что я показал в ответе ниже...   -  person Amro    schedule 17.01.2014


Ответы (1)


Octave можно встроить в отдельную программу на C++. Пример см. здесь.

MATLAB также можно использовать из ваших приложений с помощью MATLAB Engine API.

person Amro    schedule 16.01.2014