如何编译 C 代码来调用八度函数并使用 GTK+2 制作 GUI

如何编译 C 代码来调用八度函数并使用 GTK+2 制作 GUI

我正在尝试从 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

您是否尝试过在命令行上添加必要的 gtk+ 标头搜索路径mkoctfile

OPTIONS
       mkoctfile accepts the following options:

       -IDIR   Add include directory DIR to compile commands.

您应该能够使用该pkg-config实用程序自动包含所有头文件目录,例如

mkoctfile `pkg-config --cflags-only-I gtk+-2.0` --mex addition_GUI.c

或者你可以运行

pkg-config --cflags-only-I gtk+-2.0

在命令行上,然后手动将其输出的包含路径复制到您的 mkoctfile 命令。您将需要软件包pkg-config以及 gtk+-2.0 的开发文件和标头,即libgtk2.0-dev安装在您系统上的软件包。


为了创建可运行的 mex 可执行文件,您可能需要使用 mkoctfile 选项添加相应的库-L- 或者通过添加--libs到命令中pkg-config,即

mkoctfile `pkg-config --cflags-only-I --libs gtk+-2.0` --mex addition_GUI.c

或(手动添加库)

pkg-config --libs gtk+-2.0

相关内容