c - 尽管拥有所有必需的软件包,但无法使用 Hello World 示例在 Fedora 上编译 GTK4

标签 c fedora gtk4

我已经阅读了我使用的 GTK4 的 GTK 安装说明

sudo dnf install gtk4 gtk4-devel

Hello, World 示例的代码是

#include <gtk/gtk.h>

static void
print_hello (GtkWidget *widget,
             gpointer   data)
{
  g_print ("Hello World\n");
}

static void
activate (GtkApplication *app,
          gpointer        user_data)
{
  GtkWidget *window;
  GtkWidget *button;

  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "Window");
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);

  button = gtk_button_new_with_label ("Hello World");
  g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
  gtk_window_set_child (GTK_WINDOW (window), button);

  gtk_window_present (GTK_WINDOW (window));
}

int
main (int    argc,
      char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}

我使用了GCC的编译函数:

gcc -o hello-world-gtk hello-world-gtk.c `pkg-config --cflags --libs gtk4`

但是出现这个错误

gtktest.c:1:10: fatal error: gtk/gtk.h: No such file or directory
    1 | #include <gtk/gtk.h>
      |          ^~~~~~~~~~~

正如我所见,我应该安装所有必需的软件包,但我不确定为什么编译器无法提取 gtk 库。任何帮助都会很棒。

最佳答案

好吧,我找到了一个奇怪的解决方案。

无论出于何种原因,使用他们粘贴的编译代码都无法正常工作,但是当我切换到下面的代码时,它工作得很好。

gcc `pkg-config --cflags gtk4` hello.c -o hello `pkg-config --libs gtk4`

关于c - 尽管拥有所有必需的软件包,但无法使用 Hello World 示例在 Fedora 上编译 GTK4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69136043/

相关文章:

python - 如何将 gtk4 PopoverMenu 附加到父窗口小部件?

c - 为什么 GTK 4 报告 "assertion ' GTK_IS_WIDGET(部件 )' failed"?

c - 程序给我段错误,不知道为什么

c - 向二维动态表添加元素

python - Fedora系统python3解释器和altinstall

linux - 获取对话框以显示 utf-8

c - 如何使用 css 降低 gtk 对话框的标题栏高度?

c++ - 使用堆内存(malloc/new)会创建一个不确定的程序吗?

c - 为什么int在这里给出8位的垃圾值?

python - 如何安装 PyAudio 0.2.11 Fedora