我在网上找到了很多关于各种gtk使用的例子,但是大多数都包含了包含的头文件
#include <config.h>
Run Code Online (Sandbox Code Playgroud)
而且我不能在任何地方找到这个标题,所以我无法让这些例子起作用.
这是关于什么的?
在哪里我可以采取或我可以取代这个标题?
或者我可以不同地配置这些文件/项目以使其工作,因为其他gtk项目在我的comp上工作?
目前我尝试编译socket示例testsocket.c并在编译期间得到错误未定义的引用'create_child_plug'.除了在这个标题中,我认为没有任何理由不起作用.
但无论如何我可能是错的.
我认为你正在尝试自己编译一个单独的源文件,而不是单独使用它.两个原因.
第一个原因:config.h是Autoconf输出的头文件的默认名称,它包含特定于平台的定义.这就是为什么你不会在任何地方找到它 - 它是在你运行./configure项目时生成的,它的内容取决于你的系统配置方式.因此它不会包含在任何项目中,您必须使用Autoconf自己生成它.或者只是注释掉#include <config.h>并查看缺少的定义,然后自己定义它们.
另一个原因:
目前我尝试编译socket示例testsocket.c并在编译期间得到错误未定义的引用'create_child_plug'.除了在这个标题中,我认为没有任何理由不起作用.但无论如何我可能是错的.
实际上,该文件包含以下定义create_child_plug:
extern guint32 create_child_plug (guint32 xid, gboolean local);
Run Code Online (Sandbox Code Playgroud)
所以问题不是create_child_plug没有定义.您不需要标题,它在源文件中定义.extern表示此函数的实际代码位于不同的源文件中.在这种情况下,您将获得链接时(非编译时)错误,因为链接器无法找到该函数的任何代码.您应该在.c文件中查找它,而不是.h文件,并编译该代码.
我建议你下载整个GTK源代码并编译它,并从那里运行测试程序,而不是从网上挑选单个源文件.