如何从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;
}
你甚至尝试过任何东西吗?或者你只是希望有人在这里为你工作? –
@EliasVanOotegem我已经尝试从C代码mex文件调用八度函数,并且我成功了,但是我不知道如何编译它为GTK + 2代码 – user3132152
@ user3132152:我认为你在这里混淆了事情; MEX/OCT文件(用C/C++编写)只能由MATLAB/Octave调用。根据我的理解,您正在寻找与从独立C/C++程序调用MATLAB/Octave相反的方法,我在下面的答案中已经给出了答案... – Amro