Gtk can';“找不到”&书信电报;配置h>&引用;

Gtk can';“找不到”&书信电报;配置h>&引用;,c,gtk,C,Gtk,我在网上找到了许多关于各种gtk使用的例子,但大多数都包含了包含的标题 #include <config.h> #包括 我找不到这个标题,所以我无法让这些例子发挥作用 这是怎么回事? 我可以在哪里取或用什么替换此标题? 或者,我可以对这些文件/项目进行不同的配置,以使它们与我公司的其他gtk项目一样工作 目前我尝试编译套接字示例和 在编译过程中,我得到了对“create_child_plug”的错误未定义引用。除此标题外,我看不出有任何理由使其不起作用。 但我可能还是错了。实际上

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

#include <config.h>
#包括
我找不到这个标题,所以我无法让这些例子发挥作用

这是怎么回事?
我可以在哪里取或用什么替换此标题?
或者,我可以对这些文件/项目进行不同的配置,以使它们与我公司的其他gtk项目一样工作

目前我尝试编译套接字示例和 在编译过程中,我得到了对“create_child_plug”的错误未定义引用。除此标题外,我看不出有任何理由使其不起作用。

但我可能还是错了。

实际上,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
另外,您确定已将所有必需的目录添加到编译器的include path中吗?
在ubuntu上,只需一个
pkg config gtk+-2.0就可以很容易地编译出一个独立的源文件,而不是设计成独立工作的。有两个原因

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

另一个原因是:

目前,我尝试编译套接字示例testsocket.c,在编译过程中,我得到了对“create_child_plug”的错误未定义引用。我看不出有任何理由让它不起作用,除了在这个标题中。 但无论如何,我可能错了

实际上,该文件包含
创建子插件
的定义:

extern guint32 create_child_plug (guint32 xid, gboolean local);
所以问题不是没有定义
create\u child\u plug
。您不需要头,它就在源文件中定义
extern
表示此函数的实际代码位于不同的源文件中。在这种情况下,您将得到一个链接时(而不是编译时)错误,因为链接器找不到该函数的任何代码。您应该在
.c
文件中查找它,而不是在
.h
文件中,并编译该代码


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

您可以提供有关系统环境的更多信息吗?当然可以。Ubuntu 10.04/64,Gtk2。这可能类似于这个问题:嗯,你完全正确,我很抱歉给你带来困惑。还不能通过mysqlf编译整个gtk,但在某个时候我肯定会。因为使用gtk,我仍然在与C编程作斗争(如您所见)。遗漏的函数正好在另一个(extern)文件中,我认为问题出在config.h中(事实并非如此)。谢谢你的帮助。