c - 如何正确包含用于 GTK linux 开发的 gtk.h 文件?
问题描述
在 Linux Mint 20.1 上,我使用以下命令安装了软件包 libgtk-3.0-dev:
sudo apt install libgtk-3.0-dev
安装成功但是当我尝试编译一个简单的例子时:
// Include gtk
#include <gtk/gtk.h>
static void on_activate (GtkApplication *app) {
// Create a new window
GtkWidget *window = gtk_application_window_new (app);
// Create a new button
GtkWidget *button = gtk_button_new_with_label ("Hello, World!");
// When the button is clicked, close the window passed as an argument
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_close), window);
gtk_window_set_child (GTK_WINDOW (window), button);
gtk_window_present (GTK_WINDOW (window));
}
int main (int argc, char *argv[]) {
// Create a new application
GtkApplication *app = gtk_application_new("com.example.GtkApplication", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL);
return g_application_run (G_APPLICATION (app), argc, argv);
}
但是编译器给了我一个错误,它找不到头文件。我可能在这里遗漏了一些东西。任何人,你能指导我如何解决这个问题吗?
我使用以下命令进行编译:
gcc -I/usr/include/gtk-3.0 -I/usr/include/glib-2.0 gtk_app.c
我得到的错误是:
In file included from /usr/include/glib-2.0/glib/galloca.h:32,
from /usr/include/glib-2.0/glib.h:30,
from /usr/include/gtk-3.0/gdk/gdkconfig.h:13,
from /usr/include/gtk-3.0/gdk/gdk.h:30,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from gtk_app.c:2:
/usr/include/glib-2.0/glib/gtypes.h:32:10: fatal error: glibconfig.h: No such file or directory
32 | #include <glibconfig.h>
解决方案
您必须向编译器提供头文件和库的路径信息。
对于编译,这可以通过选项来完成(包括反引号)
`pkg-config --cflags gtk+-3.0`
对于链接,您可以添加
`pkg-config --libs gtk+-3.0`
从您的错误消息看来,您的问题不是 GTK,而是 GLIB。您还应该为 package 添加相同的命令glib-2.0
。
推荐阅读
- css - 按钮未在 Firefox 中相对定位的容器顶部放置
- javascript - 加载 html 页面并运行 datalayer.push 脚本后,如何使用 javascript 抓取数据层中存在的数据?
- r - 在R中的数据框中插入和复制行
- javascript - Expo AuthSession promptAsync - 获取新访问令牌时无法等待返回
- docker - Docker 镜像拉取失败并导致 docker 守护进程无法访问,直到机器重新启动
- python - Python Plot 使用数据绘制平行对角线,而不是轴限制
- .net - dotnet 在代理 407 后面发布
- javascript - 如何通过服务工作者区分常规和 iframe 请求?
- r - 使用 lasso 回归的交叉验证来找到最佳调整参数 λ
- c - 优化级别打破了 C 代码顺序