4

我想在 Windows 7 32 位上创建一个小型 GUI。这就是我所做的:

  • 我安装了MinGw。
  • 我从这里下载了 gtk+ all-in-one bundle:http ://www.gtk.org/download/win32.php并将其添加到我的 PATH 变量中

为了检查正确的安装,我输入gcc了命令提示符。它返回错误消息realgcc: no input file,所以看起来 gcc 安装正确。然后我尝试运行gtk-demo。它也有效

  • 我的 go 安装已经过测试并且运行良好。我已经用它开发了一个小型服务器。GOROOT 和 GOPATH 都设置正确。
  • 要安装 go-gtk,我使用了go get github.com/mattn/go-gtk/gtk

安装完成时出现很多警告。

C:\Users\lhk>去 github.com/mattn/go-gtk/gtk

# github.com/mattn/go-gtk/glib

realgcc.exe:警告:最后一个输入文件后的“-x c”无效

realgcc.exe:没有输入文件

# github.com/mattn/go-gtk/gdk

realgcc.exe:警告:最后一个输入文件后的“-x c”无效

realgcc.exe:没有输入文件

# github.com/mattn/go-gtk/pango

realgcc.exe:警告:最后一个输入文件后的“-x c”无效

realgcc.exe:没有输入文件

C:\用户\lhk>

为了测试 go-gtk 的安装,我使用了这里的示例代码:http: //mattn.github.io/go-gtk/。我尝试运行此代码,go run但它以错误消息终止:

# github.com/mattn/go-gtk/glib
realgcc.exe: 警告: '-x c' after last input file has no effect
realgcc.exe: no input files
# github.com/mattn/go-gtk/gdk
realgcc. exe:警告:最后一个输入文件后的'-x c'无效
realgcc.exe:没有输入文件
#github.com /mattn/go-gtk/pango
realgcc.exe:警告:最后一个输入文件后的'-x c'没有影响
realgcc.exe:没有输入文件
退出状态2

我做错了什么 ?如何正确设置 gtk 以与 go 一起使用?

更新

Go IRC 频道上的 mb0 非常有帮助,并向我指出了这个https://groups.google.com/forum/?fromgroups#!topic/golang-nuts/GwbkQREiTZI

go-gtk 的创建者显然让 go-gtk 在 win32 上工作。他没有使用 go get 。相反,他将 github 存储库克隆到他的 GOPATH 上的 src 文件夹中,并使用 mingw 编译器 shell 调用 mingw32-make。

我做了完全相同的事情:克隆了 repo 并调用了 mingw32-make。它开始编译但失败并显示错误消息:

# pkg-config --cflags gtksourceview-2.0

在 pkg-config 搜索路径中找不到包 gtksourceview-2.0。

也许您应该添加包含“gtksourceview-2.0.pc”的目录

到 PKG_CONFIG_PATH 环境变量

找不到包“gtksourceview-2.0”退出状态

1 mingw32-make: * [全部] 错误 2

这实际上给出了一些具体的建议。显然有一个包配置实用程序,它没有找到一个重要的包。不幸的是,我不知道如何解决这个问题。我查看了 gtk 网站,在 pkg-config http://www.gtk.org/api/2.6/gtk/gtk-compiling.html上找到了这篇文章

在我看来 pkg-config 负责配置包导入。因此,我很犹豫是否自己创建 PKG_CONFIG_PATH 变量,因为我不知道它应该指向哪里。我只是尝试在我的 mingw shell:pkg-config --cflags gtk+-2.0pkg-config --libs gtk+-2.0. 第一个似乎显示包含路径的列表,第二个仅打印可用的库。有 pango、cairo、gobject、pixbuf 等等,但绝对没有像 gtksourceview 这样的库。

我的猜测是我的机器上没有这个库。这让我很困惑,因为我下载并解压缩了一个应该满足所有依赖项的包。

我能做些什么来解决这个问题?

4

2 回答 2

2

它终于奏效了。这是让 gtk 使用 go 在 32 位 Windows 上工作的分步指南。

  • 安装 Mingw 和 Msys
  • 从此处下载 gtk 一体式捆绑包http://www.gtk.org/download/win32.php
  • 将其解压缩到 C:\GTK 。听说名字很重要 就我个人而言,我想不出一个原因,但您可能希望将此作为可能的错误源牢记在心。
  • 将 bin 文件夹添加到您的路径。现在你应该可以从你的 shell 运行 gtk-demo 了。

gtk 网站说一体化捆绑包同时包含 gtk+ 堆栈和 3rd 方依赖项。但是为了在 windows 上编译 go-gtk,你需要安装额外的库。

您需要 gtksourceview 和 libxml。这些可以在这里找到:http: //ftp.gnome.org/pub/gnome/binaries/win32/gtksourceview/2.10/在这里:http : //ftp.gnome.org/pub/GNOME/binaries/win32/dependencies /

下载将是一个包含各种文件夹的压缩文件。您需要解压缩文件夹并将它们复制到 C:\GTK 中。Windows 会询问您是否要将它们集成到现有的中。是的你是。现在您已经下载了所有依赖项。

  • 打开 Mingw shell 并导航到 go-gtk 文件夹
  • 调用“pkg-config --cflags gtk+-2.0”
  • 调用“pkg-config --libs gtk+-2.0”
  • 调用 mingw32-make

编译应该可以正常工作。如果有错误并且 mingw 抱怨缺少库,您应该能够像安装 gtksourceview 和 libxml 一样安装它们。

现在来测试 go-gtk

  • 在你的 go src 目录中创建一个新文件夹。我将其命名为“gtktest”
  • 创建一个新的 .go 文件。
  • 从这里复制示例代码:http: //mattn.github.io/go-gtk/
  • 使用 go build 创建一个 exe

我希望这可以帮助您在 Windows 上使用 go 和 gtk。

于 2013-06-11T11:06:08.757 回答
0

我一直在尝试让一个 GUI 框架在 GO/Windows 上运行,我终于按照你的指示设法做到了。

我只有几个补充:

  • 我在 PATH 中添加了“C:\GTK\bin”,而不是“C:\GTK”
  • 我不得不添加第三个依赖项:pthreads
  • 下载正确的依赖项:每次获取文件名中包含“dev”的文件
  • mingw 控制台位于 C:\MinGW\msys\1.0\msys.bat
于 2014-04-01T12:41:59.690 回答