Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GTK+;编译C代码时出错;2调用倍频程函数_C_Gtk_Octave_Mex - Fatal编程技术网

使用GTK+;编译C代码时出错;2调用倍频程函数

使用GTK+;编译C代码时出错;2调用倍频程函数,c,gtk,octave,mex,C,Gtk,Octave,Mex,我正试图从C代码中调用一个倍频程函数,但问题是,当为什么在octavemkoctfile--mex addition_GUI.C中运行此命令时,会出现错误addition_GUI.C:1:20:致命错误:gtk/gtk.h:没有终止此类文件或目录编译。 我可以从C代码中调用一个倍频程函数,但是当我尝试使用GTK+2 thwn从代码中调用时,会出现错误 #include<gtk/gtk.h> #include "mex.h" void mexFunction(int nlhs, mx

我正试图从C代码中调用一个倍频程函数,但问题是,当为什么在octave
mkoctfile--mex addition_GUI.C
中运行此命令时,会出现错误
addition_GUI.C:1:20:致命错误:gtk/gtk.h:没有终止此类文件或目录编译。
我可以从C代码中调用一个倍频程函数,但是当我尝试使用GTK+2 thwn从代码中调用时,会出现错误

#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;

}
#包括
#包括“mex.h”
void MEX函数(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,“加法”);
mexCallMATLAB(0,NULL,1,out,“disp”);
MX阵列(在[0]中);
MX阵列(在[1]中);
MX阵列(输出[0]);
}
无效静态调用(GtkWidget*小部件,gpointer数据)
{
g_print(“\n%s\n”,gtk_条目\u获取文本(gtk_条目(数据)));
gint a=3;
gint b=2;
金特x;
x=a+b;
chary[4];
sprintf(y,“%d”,x);
gtk_条目_设置_文本(gtk_条目(数据),y);
}
int main(int agrc,字符*agrv[])
{
gtk_init(agrc和agrv);
GtkWidget*条目、*窗口、*按钮、*hbox;
窗口=gtk_窗口_新建(gtk_窗口_顶层);
g_信号连接(窗口,“删除事件”,g_回调(gtk_主退出),空);
hbox=gtk_hbox_新(0,0);
gtk_容器添加(gtk_容器(窗口),hbox);
按钮=gtk_按钮_新建_,带助记符(“添加”);
entry=gtk_entry_new();
常量字符*sum=“3+2”;
gtk_条目_集合_文本(gtk_条目(条目),总和);
g_信号连接(按钮“点击”,g_回调(呼叫),输入);
g_信号连接(输入,“激活”,g_回调(呼叫),输入);
gtk_盒包装启动(gtk_盒(hbox),按钮,0,0,0);
gtk_盒包装启动(gtk_盒(hbox),输入,0,0,0);
gtk_小部件_全部显示(窗口);
gtk_main();
返回0;
}

您需要以某种方式指定要再次链接的include目录和lib-(那些
pkg config--libs--cflags gtk+-2.0
返回)。如果没有,则在命令行执行它,并尝试直接提供该输出。如前所述,我不知道如何将它们正确地提供给mkoctfile,我使用了
mkoctfile`pkg-config--cflags-only-I gtk+-2.0`--mex addition\u GUI.c
但是我得到了错误
sh:1:pkg-config--cflags-only-I gtk+-2.0:找不到mkoctfile:无法识别的参数
您需要检查如何将链接器/lib/cflags传递给
mkoctfile