(我不是新用户 - 长期参与者,但由于不活动,旧的个人资料丢失了)
使用 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 无法识别?
我猜测这里引用的 GTK 库并不具有您需要的功能
NewVBox
和 NewMenuBar
。我之前也遇到过类似的问题(不是在 GO 中)。
总的来说,发生这种情况是因为 GTK 资源只是到真正动态库的链接,并且在可执行文件中将这些库一起携带。
因此,编译后,实际安装的 GTK 库可能不是具有您正在寻找的功能的正确版本。
有这个威胁提到了一个可能对您有帮助的解决方案。 主要建议使用
pkg-config
来包含所有需要的库:pkg-config --cflags gtk+-3.0