在Ubuntu c上找不到gtk / gtk.h

前端之家收集整理的这篇文章主要介绍了在Ubuntu c上找不到gtk / gtk.h前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对编程很陌生,特别是在涉及如何包含库和类似的活动时.我过去一直在使用 Python进行编程,我一直在使用GTK来创建窗口,这也是我用c编程时打算做的事情.为了开始,这是我的代码
#include <stdlib.h>
#include <gtk/gtk.h>

static void helloWorld (GtkWidget *wid,GtkWidget *win)
{
  GtkWidget *dialog = NULL;

  dialog = gtk_message_dialog_new (GTK_WINDOW (win),GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_CLOSE,"Hello World!");
  gtk_window_set_position (GTK_WINDOW (dialog),GTK_WIN_POS_CENTER);
  gtk_dialog_run (GTK_DIALOG (dialog));
  gtk_widget_destroy (dialog);
}

int main (int argc,char *argv[])
{
  GtkWidget *button = NULL;
  GtkWidget *win = NULL;
  GtkWidget *vBox = NULL;

  /* Initialize GTK+ */
  g_log_set_handler ("Gtk",G_LOG_LEVEL_WARNING,(GLogFunc) gtk_false,NULL);
  gtk_init (&argc,&argv);
  g_log_set_handler ("Gtk",g_log_default_handler,NULL);

  /* Create the main window */
  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_default_size(GTK_WINDOW (win),400,300);
  gtk_container_set_border_width (GTK_CONTAINER (win),8);
  gtk_window_set_title (GTK_WINDOW (win),"test");
  gtk_window_set_position (GTK_WINDOW (win),GTK_WIN_POS_CENTER);
  gtk_widget_realize (win);
  g_signal_connect (win,"destroy",gtk_main_quit,NULL);

  /* Create a vertical Box with buttons */
  vBox = gtk_vBox_new (TRUE,6);
  gtk_container_add (GTK_CONTAINER (win),vBox);

  button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);
  g_signal_connect (G_OBJECT (button),"clicked",G_CALLBACK (helloWorld),(gpointer) win);
  gtk_Box_pack_start (GTK_Box (vBox),button,TRUE,0);

  button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
  g_signal_connect (button,NULL);
  gtk_Box_pack_start (GTK_Box (vBox),0);

  /* Enter the main loop */
  gtk_widget_show_all (win);
  gtk_main ();
  return 0;
}

代码取自我在互联网上发现的“Hello world”示例.

我知道这个问题已经得到了答案,但我的情况要复杂得多(至少从我的角度来看).首先,我已经安装了所有必需的包.顺便说一句,我运行Ubuntu 14.04.

当我使用g main.cpp编译代码时,我收到以下错误

main.cpp:2:21: fatal error: gtk/gtk.h: No such file or directory
 #include <gtk/gtk.h>
                     ^
compilation terminated.

对此特定错误有一个修复,即扩展编译命令,如下所示:g main.cpp -I /usr/include / gtk-2.0.然而,这将提供另一个类似的错误

In file included from /usr/include/gtk-2.0/gdk/gdk.h:32:0,from /usr/include/gtk-2.0/gtk/gtk.h:32,from main.cpp:2:
/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30:21: fatal error: gio/gio.h: No such file or directory
 #include <gio/gio.h>
                     ^
compilation terminated.

您也可以通过扩展这样的命令来解决这个问题(所有命令都是互联网上的资金,我对此并不十分了解):g -g -Wall -c -o program.o main.cpp -I / usr /include/gtk-2.0 $(pkg-config –libs –cflags glib-2.0).现在cairo.h会出错.

如您所见,存在类似的错误.我不知道出了什么问题,但我必须相信有一个相对容易的解决办法.

此外,我尝试了全新安装的Ubuntu(只需要安装的软件包),并发生相同的错误.

当包含某个包时,pkgconfig命令为编译器提供了所有必需的-I(包含)和-l(链接器)语句.

看看运行给出的内容

pkgconfig --cflags --libs gtk+-2.0

我已经尝试在我的Ubuntu 14.04.1上编译你的代码了,当我使用时,它很好用:

g++ main.cpp `pkg-config --cflags --libs gtk+-2.0`

可能pkg-config –libs –cflags glib-2.0不足以提供所有必需的包含路径和共享库.

猜你在找的Ubuntu相关文章