我一直在 Linux 下使用 nsf 的“哥特式”(tcl/tk go 绑定)库有一段时间了:它运行良好,并且非常方便地将基于 tcl/tck 的图形界面添加到 Go 应用程序(或多或少是什么) Tkinter 是 Python)。
https://github.com/nsf/gothic
但是,我在 Mac 下安装它时遇到了一些问题。
为了解决这个问题,我对我的 Mac 开发环境进行了以下修改:
安装了最新版本的 Xcode。
完全删除了“端口”(Mac 版 Linux 工具的端口)并从头安装到最新版本。
升级到最新的稳定版 Go。
现在至少我可以在 Mac 下安装“gothic”并且编译时没有任何抱怨。
我必须对文件进行以下更改interpreter.go,以便标头指令指向正确的库位置:
#cgo !tcl85 LDFLAGS: -L/opt/local/lib
#cgo !tcl85 LDFLAGS: -ltcl8.6 -ltk8.6
#cgo !tcl85 CFLAGS: -I/opt/local/include/tcl8.6
#cgo darwin tcl85 CFLAGS: -I/opt/local/include
#cgo darwin tcl85 CFLAGS: -I/opt/local/include/tcl8.6
而不是原来的:
#cgo !tcl85 LDFLAGS: -ltcl8.6 -ltk8.6
#cgo !tcl85 CFLAGS: -I/usr/include/tcl8.6
#cgo tcl85 LDFLAGS: -ltcl8.5 -ltk8.5
#cgo tcl85 CFLAGS: -I/usr/include/tcl8.5
#cgo darwin tcl85 CFLAGS: -I/opt/X11/include
所以这是指向正确的库。
当前的情况是示例确实可以编译,没有任何警告或错误消息。
问题是生成的可执行文件只能随机正确运行,不时形成,但大多数时候只是“挂起”(在界面应该是的地方显示一个空的白色矩形)程序块的执行。
在 nsf 的代码中,最后一条明显执行的语句(当可执行文件卡住时)是对Tk_Mainloop().
这就是我试图弄清楚出了什么问题。
所以很明显,这不是 Go (golang) 到 Tcl 的绑定问题。
看起来 Tcl 和 Tk 之间的“连接”有时有效,有时在该上下文中无效(而在 Linux 下它可以完美运行)。
有没有人在 mac 上使用“gothic”更成功(或者在 mac 下使用 tcl/tk 绑定的经验可能更多)?
如果是,将非常感谢有关如何进行的一些帮助。
相关分类