如何在 C 文件中包含 gtk/gtk.h

How to include gtk/gtk.h in a C file

我是 C 语言开发的新手,想使用 GTK 创建 GUI。我已经下载并安装了 gtk 3.6.4 包。我正在尝试编译一些示例代码,如下所示:

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show(window);
    gtk_main();
    return 0;
}

我真的很难理解如何包含头文件。我已经看到几个讨论使用 pkg-config 命令的线程,例如:

pkg-config --cflags --libs gtk+-3.0

这段代码应该插入哪里?它 运行 在命令 window 上运行并生成一些输出,但这并不能解决我在 MS visual studio 代码中遇到的错误。我提前为重复一个问题道歉,但我仍然无法理解这个 pkg-config 代码应该在哪里 运行 并且我从其他回复中不清楚。

pkg-config 行是一个 shell 命令,它在标准输出上生成您需要传递的编译器标志以使用您想要的函数。例如,

pkg-config --cflags gtk+-3.0

为我生产

-pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/mirclient -I/usr/include/mircommon -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 

您想要做的是使用 shell 的一项功能,其中一个命令的输出被放入另一个命令的命令行。在 bash 中,这是通过 `...`:

完成的
gcc -o program program.c `pkg-config --cflags --libs gtk+-3.0`

对于bash,另一种语法是$(...):

gcc -o program program.c $(pkg-config --cflags --libs gtk+-3.0)

对于 GNU make makefile,如果要使用 $(...),则需要使用 shell 函数:

gcc -o program program.c $(shell pkg-config --cflags --libs gtk+-3.0)

--cflags 生成 C 编译器标志,--libs 生成链接器标志。如果您使用 makefile 进行构建,您将只想向生成 .o 文件的配方提供 --cflags,并且只向生成最终可执行文件的配方提供 --libs。要使用单个命令将单个 C 文件直接编译为可执行文件,请提供两者。