为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go with gco 中通过 gtk 使用 glib 的问题

在 Go with gco 中通过 gtk 使用 glib 的问题

Go
暮色呼如 2021-06-21 08:38:19
我对C的理解很差。我可以阅读代码,但我不知道如何包含/构建/制作/配置任何东西。这可能是我无法编译以下 Go 代码的原因。这段代码是我尝试将https://developer.gnome.org/gtk3/3.0/gtk-getting-started.html改编为 Go 的尝试。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>但它没有解决任何问题。有谁知道我做错了什么?
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

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


查看完整回答
反对 回复 2021-06-21
  • 1 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信