使用 github.com/gotk3/gotk3 在 Go 中无法识别 GTK 小部件

问题描述 投票:0回答:1

(我不是新用户 - 长期参与者,但由于不活动,旧的个人资料丢失了)

使用 github.com/gotk3/gotk3 使用 GoLang 和 GTK 进行一些实验 - 在 Windows 11 上使用 Liteide。

根据 github.com/gotk3/gotk 中的示例代码复制以下代码:

package main

import (
    "log"
    "os"

    "github.com/gotk3/gotk3/glib"
    "github.com/gotk3/gotk3/gtk"
)

func main() {

    const appID = "org.gtk.example"
    application, err := gtk.ApplicationNew(appID, glib.APPLICATION_FLAGS_NONE)
    
    if err != nil {
        log.Fatal("Could not create application.", err)
    }
    application.Connect("activate", func() { onActivate(application) })
    // Run Gtk application
    os.Exit(application.Run(os.Args))
}


func onActivate(application *gtk.Application) {

    appWindow, err := gtk.ApplicationWindowNew(application)
    if err != nil {
        log.Fatal("Could not create application window.", err)
    }

    l, err := gtk.LabelNew("Hello, gotk3!")
    if err != nil {
        log.Fatal("Unable to create label:", err)
    }

    appWindow.Add(l)
    appWindow.SetTitle("Basic Application.")
    appWindow.SetDefaultSize(800, 400)
    appWindow.Show()

}

示例代码编译并运行良好。 但我将这三行添加到示例代码中:

    vbox := gtk.NewVBox(false, 1)
    menubar := gtk.NewMenuBar()
    vbox.PackStart(menubar, false, false, 0)

现在构建时,我遇到错误:

\main.go:51:14: undefined: gtk.NewVBox
\main.go:56:17: undefined: gtk.NewMenuBar 

我的 go.mod 文件似乎没问题:

模块 goGTK

前往1.21.4

需要 github.com/gotk3/gotk3 v0.6.2

go module tidy 导入了必要的 GTK 模块。无需我的添加,该程序即可编译并运行良好。

为什么 gtk.NewVBox 和 gtk.NewMenuBar 无法识别?

go import gtk
1个回答
0
投票

我猜测这里引用的 GTK 库并不具有您需要的功能

NewVBox
NewMenuBar
。我之前也遇到过类似的问题(不是在 GO 中)。

总的来说,发生这种情况是因为 GTK 资源只是到真正动态库的链接,并且在可执行文件中将这些库一起携带。

因此,编译后,实际安装的 GTK 库可能不是具有您正在寻找的功能的正确版本。

这个威胁提到了一个可能对您有帮助的解决方案。 主要建议使用

pkg-config
来包含所有需要的库:
pkg-config --cflags gtk+-3.0

© www.soinside.com 2019 - 2024. All rights reserved.