gpt4 book ai didi

go - 在 Go with gco 中通过 gtk 使用 glib 时出现问题

转载 作者:数据小太阳 更新时间:2023-10-29 03:17:53 24 4
gpt4 key购买 nike

我对C的理解很差。我可以阅读代码,但我不知道如何包含/构建/制作/配置任何内容。这可能就是为什么我无法编译以下 Go 代码的原因。这段代码是我尝试改编 https://developer.gnome.org/gtk3/3.0/gtk-getting-started.html去。

package main

// #cgo pkg-config: gtk+-3.0
// #include <gtk/gtk.h>
import "C"

func main() {
C.gtk_init(nil, nil)
window := C.gtk_window_new(C.GTK_WINDOW_TOPLEVEL)
C.g_signal_connect(window, "destroy", C.G_CALLBACK(C.gtk_main_quit), nil)
C.gtk_widget_show(window)
C.gtk_main()
}

违规行是 C.g_signal_connect(...)。错误是:

1: error: 'G_CALLBACK' undeclared (first use in this function)
1: error: 'g_signal_connect' undeclared (first use in this function)
1: note: each undeclared identifier is reported only once for each function it appears in

如果我删除该行,则代码可以运行并且 gtk 窗口会打开。

我发现这个g_signal_connect来自于glib-object.h,它包含在gtk的很多头文件中。我试着自己包含它:

// #cgo pkg-config: gtk+-3.0 glib-2.0
// #include <gtk/gtk.h>
// #include <glib-object.h>

但是并没有解决任何问题。

有人知道我做错了什么吗?

最佳答案

您尝试调用的函数实际上可能是宏,它们不由 cgo 处理,因此未定义。看看go-gtk ,它为 Go 提供了与 GTK 的正确绑定(bind)。

关于go - 在 Go with gco 中通过 gtk 使用 glib 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17105694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com