致命错误:gtk/gtk.h:没有这样的文件或目录

致命错误:gtk/gtk.h:没有这样的文件或目录

我知道这个问题已经被回答过好几次了,我试过每一个,但仍然找不到确切的解决方案。我开始学习带有 Glade 用户界面的 GTK + 3.0。我知道 Glade 将为设计生成 XML,并且相同的 XML 可以在我们的 c/cpp 程序中使用。但要执行该程序,必须安装所有库或必须在 IDE 中将路径设置为库。我使用 Anjuta IDE 来开发这个程序,每当我尝试构建程序时都会收到以下错误。

gtk/gtk.h: No such file or directory

在此处输入图片描述

程序代码

#include <gtk/gtk.h>!
#include <glade/glade.h>

void
ok_button_clicked (GtkWidget *widget, gpointer user_data)
{
  printf ("Thanks for trying out my program.\n");
  gtk_main_quit ();
}

int main (int argc, char *argv[])
{
  GladeXML  *main_window;
  GtkWidget *widget;

  gtk_init (&argc, &argv);

  /* load the interface */
  main_window = glade_xml_new ("example-1.glade", NULL, NULL);

  /* connect the signals in the interface */

  /* Have the ok button call the ok_button_clicked callback */
  widget = glade_xml_get_widget (main_window, "OKButton");
  g_signal_connect (G_OBJECT (widget), "clicked",
                    G_CALLBACK (ok_button_clicked),
                    NULL);

  /* Have the delete event (window close) end the program */
  widget = glade_xml_get_widget (main_window, "MainWindow");
  g_signal_connect (G_OBJECT (widget), "delete_event",
                    G_CALLBACK (gtk_main_quit), NULL);

  /* start the event loop */
  gtk_main ();

  return 0;
}

每当我尝试添加 Lib 或外部 Lib 时,我都无法添加gtk/gtk.h文件,相同的文件已经存在/usr/include/gtk-3.0/gtk/gtk.h,当我尝试在libanjuta相同的代码中复制相同的文件时仍然会出现相同的错误,任何帮助都会受到高度赞赏的朋友,我正在努力执行程序..

谢谢 Amul Bhatia

答案1

如果你只是想编译并运行它而不是制作 makefile

将此文件保存在foob​​ar.c 归档为例子-1.glade

https://github.com/interval1066/XFC/blob/master/examples/glade/example-1/example-1.glade

打开终端并切换到包含foob​​ar.c例子-1.glade 并发出此行

 gcc -o foobar foobar.c `pkg-config --cflags --libs libglade-2.0`

并运行二进制文件

 ./foobar

或者如果你坚持使用 makefile 进行编译,请用这个替换你的 makefile

 ## Created by Anjuta

 CC = gcc
 CFLAGS = -g -Wall
 OBJECTS = foobar.o
 INCFLAGS = 
 LDFLAGS = -Wl,-rpath,/usr/local/lib
 LIBS =$(shell pkg-config gtk+-2.0 libglade-2.0 --libs)

 GTKFLAGS=-export-dynamic `pkg-config --cflags --libs libglade-2.0 `
 all: foobar

 foobar: $(OBJECTS)
$(CC) -o foobar $(OBJECTS) $(LDFLAGS) $(LIBS)

 .SUFFIXES:
 .SUFFIXES: .c .cc .C .cpp .o

 .c.o :
    $(CC) -o $@ -c $(CFLAGS) $< $(INCFLAGS) $(GTKFLAGS)

 count:
    wc *.c *.cc *.C *.cpp *.h *.hpp

 clean:
    rm -f *.o

 .PHONY: all
 .PHONY: count
 .PHONY: clean

我在我的系统中测试了上述说明,它有效。

相关内容