Gtk找不到“<config.h>”</config.h>

时间:2012-02-24 23:55:40

标签: gtk

我在网上找到了很多关于各种gtk使用的例子,但大多数都包含了包含的标题

#include <config.h>

并且我无法将这个标题放在哪里,所以我无法让这些例子起作用。

这是什么意思?
在哪里我可以采取或我可以取代这个标题?
或者我可以不同地配置这些文件/项目以使其工作,因为其他gtk项目在我的comp上工作?

目前我尝试编译套接字示例testsocket.c和 在编译期间,我得到错误未定义的引用'create_child_plug'。除了这个标题外,我认为没有任何理由不起作用。
但无论如何我可能是错的。

2 个答案:

答案 0 :(得分:7)

我认为您正在尝试单独编译单个源文件,而不是单独使用它。有两个原因。

第一个原因:config.h是Autoconf输出的头文件的默认名称,其中包含特定于平台的定义。这就是为什么你不会在任何地方找到它 - 它是在你的项目上运行./configure时产生的,它的内容取决于你的系统配置方式。因此它不会包含在任何项目中,您必须使用Autoconf自己生成它。或者只是注释掉#include <config.h>并查看缺少的定义,然后自己定义它们。

另一个原因:

  

目前我尝试编译套接字示例testsocket.c并在编译期间得到错误未定义引用'create_child_plug'。除了在这个标题中,我认为没有任何理由不起作用。   但无论如何我可能是错的。

实际上,该文件包含create_child_plug的定义:

extern guint32 create_child_plug (guint32 xid, gboolean local);

所以问题不在于create_child_plug没有定义。您不需要标题,它在源文件中定义。 extern表示此函数的实际代码位于不同的源文件中。在这种情况下,您将获得链接时(非编译时)错误,因为链接器无法找到该函数的任何代码。您应该在.c文件中查找它,而不是.h文件,并编译该代码。

我建议您下载整个GTK源代码并对其进行编译,然后从那里运行测试程序,而不是从网上挑选单个源文件。

答案 1 :(得分:0)

实际上,GTK +目录中没有名为config.h的标题。但是,我在论坛等上看到很多人遇到与你类似的问题。你可能正在寻找的是其中之一:

  • fontconfig.h
  • glibconfig.h
  • gdkconfig.h
  • ftconfig.h

这些位于:

  • include/fontconfig/
  • lib/glib-2.0/include
  • lib/gdk-2.0/include
  • include/freetype2/freetype/config

另外,您确定已将所有必需的目录添加到编译器包含路径吗? 在ubuntu上只需pkg-config gtk+-2.0即可轻松实现。