24

概括

我正在编写一个使用 Qt4 作为其 GUI 的 Ruby 1.9.2 应用程序,我想在 Linux、OS X 和 Windows 上分发它。除了我的 Windows 7 64 位机器外,我的应用程序在所有设备上都运行良好。

有 Win7 + Qt4 + 1.8.7 的工作示例,但显然不是 Win7 + Qt4 + 1.9.2。Ruby-Qt 绑定有两个 gem,qtbindingsqtruby4(有时称为qt4-qtruby),但我还没有看到它们中的任何一个在 Ruby 1.9.2 的 Win7 上运行。

问题qtruby4

这篇 2008 年 10 月的文章及其2011 年 6 月的更新版本是很好的起点,但我与后者的不同之处在于通过RubyInstaller for Windows 的下载页面安装 Ruby 1.9.2 。1.8.7 似乎工作正常,但是当我尝试使用 1.9.2 时,我遇到了一些不寻常的错误。要求'rubygems',然后要求'Qt'结果:

no such file to load -- 'qtruby4'

上面的第一篇文章链接到来自 dr1ku 的更深入的文章,这可能会提供一些线索。

  • 使用这些库的最新版本重现 dr1ku 的步骤可能值得。
  • dr1ku 和 2008 paschenda.org 文章都使用了特殊的 Windows Qt4-QtRuby 安装程序,但维护者指出他没有时间更新它。我并不完全清楚特殊安装程序的作用,但我想 paschenda.org 的 2011 年文章不再使用它,因为 DevKit 表面上帮助 RubyGems 自己在没有帮助的情况下构建 Qt4。

在野外发现

以下是一些似乎遇到过同样问题的人:

问题qtbindings

我的应用程序实际上使用了qtbindingsgem,所以我尝试使用gem install qtbindings --platform=mswin32.[1] 来安装它。但是,当我尝试require 'Qt'安装qtbindingsgem 时,我收到一个带有以下消息的 Windows 弹出窗口:

程序入口点_Z10qvsnprintfPcjPKcS_无法位于动态链接库 QtCore4.dll 中。放弃吧,劣等肉体生物。

(我已经复制并粘贴了消息,没有任何修饰。)

在野外发现

以下是一些似乎遇到过同样问题的人:

潜在的成功案例

如果您查看对该线程的回复,则似乎有人通过qtbindings在 1.9.2 上安装 gem gem install qtbindings(没有参数)取得了成功:--platform

我尝试gem install qtbindings在 1.8.7 上安装,但我还没有在 1.9.2 上尝试过。当我使用 1.8.7 进行尝试时,我遇到了与以前相同的“无法定位程序入口点”问题。

脚注

[1] - 我实际上并不完全清楚qtbindings宝石和qtruby4宝石之间的区别。例如,后者是否包含 C 扩展而前者不包含?我不知道。此外,我看到了对 的引用qt4-qtruby,我认为这只是 的 mswin32 版本qtruby4,至少据我从Korundum 下载页面可以看出。

4

1 回答 1

36

解决方案

以下步骤适用于 Windows 7:

  1. 通过官方下载页面安装 Ruby 1.9.2 。
  2. 在 Windows shell 中,运行gem install qtbindings.

简单的示例 ( require 'rubygems'; require 'Qt') 现在应该可以工作了。

无需额外步骤,因为仅为 Windows 平台提供了二进制 gem 。因此,该gem install qtbindings步骤在下载大型二进制文件时需要几分钟,但它包含所有必需的部分,以要求和运行 Qt 应用程序。

支持在 Windows 上从源代码编译,并记录在项目的README文件中。

低调

qtbindings我给和的维护者发了电子邮件qtruby。这是完整的故事:

qtrubyKorundum 项目提供的一个包。Korundum 为所有 KDE 提供 Ruby 绑定,而qtruby只为 Qt 提供绑定。

qtbindings( github ) 是经过修改和重新打包的版本,qtruby专门针对跨平台使用进行了优化。我将在此处复制并粘贴自述文件中的“目标”部分:

目标

  1. 使用 RubyGems 在所有平台上轻松安装 Ruby 的 Qt 绑定
  2. http://qt.nokia.com维护与最新版本的 Qt 捆绑在一起的 Windows 的最新二进制 gem
  3. 为了减少绑定的范围和维护,只绑定到 Qt SDK 提供的库。
  4. 增加与非 linux 平台的兼容性

尽管Korundum 下载页面 确实提供mswin32了其 gem 的版本,但在撰写本文时,它们还没有经过任何人的积极审查,因此不应依赖它们。QtRuby 维护者告诉我,在 QtRuby 3 发布之前,RubyForge 页面可能不可靠。

回顾

现在(2011 年 10 月 3 日),不要qtruby在 Windows 上使用 gem。使用qtbindings.

可能可以qtruby在其他平台和qtbindingsWindows 上使用,但您可能会自找麻烦。如果您只使用 Qt 并且不关心 KDE 的其余部分,那么qtbindings可能是一个安全的选择。

QtRuby 的维护人员正在计划在不久的将来进行一些方法更新(例如使用 git),因此两个项目之间可能会增加共享修复和更新。

于 2011-10-04T00:16:37.137 回答