概要

我正在使用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绑定(bind)有两个 gem ,qtbindingsqtruby4(有时称为qt4-qtruby),但是我还没有看到它们在Ruby 1.9.2的Win7上运行。
qtruby4的问题

This article from October 2008及其updated version from June 2011是一个很好的起点,但我与后者的不同之处在于,通过RubyInstaller for Windows' download page安装了Ruby 1.9.2。 1.8.7似乎可以正常工作,但是在1.9.2上尝试时会遇到一些异常错误。需要'rubygems',然后要求'Qt'会导致:

no such file to load -- 'qtruby4'

上面的第一篇文章链接到more in-depth article from dr1ku,它可能提供一些线索。
  • 可能值得用这些库的最新版本重现dr1ku的步骤。
  • dr1ku和2008 paschenda.org文章都使用special Windows Qt4-QtRuby installer,但维护者注意到他hasn't had the time to update it。对于特殊安装程序的功能,我还不太清楚,但我想paschenda.org在2011年发表的文章不再使用它,因为DevKit表面上帮助RubyGems自己在没有帮助的情况下构建了Qt4。

  • 在野外发现

    以下是一些似乎遇到过相同问题的人:
  • no qtruby library on windows
  • Ruby 1.9.x + Qt4Ruby…. a pipe dream???
  • qtruby4 LoadError in ruby 1.9.1 / win32 for qtruby4-2.1.0
  • qtbindings的问题

    我的应用程序实际上使用了qtbindings gem,因此我尝试使用gem install qtbindings --platform=mswin32安装它。[1]但是,当我尝试在安装了require 'Qt' gem的情况下使用qtbindings时,出现了带有以下消息的Windows pop 窗口:



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

    在野外发现

    以下是一些似乎遇到过相同问题的人:
  • this one's in German
  • gpg4win: help

  • 潜在的成功故事

    如果您看一下对此线程的回复,那么似乎有人通过在1.9.2上使用qtbindings(没有gem install qtbindings参数)安装了--platform gem取得了成功:
  • help -- qt, ruby, ms-windows?

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

    脚注

    [1]-我对qtbindings gem 和qtruby4 gem 之间的区别实际上并不十分清楚。例如,后者是否包括C扩展名,而前者不包括C扩展名吗?我不确定。另外,我看到了对qt4-qtruby的引用,我认为这只是qtruby4的mswin32版本,至少从Korundum download page可以看出。

    最佳答案

    解决方案

    以下步骤适用于Windows 7:

  • 通过the official download page安装Ruby 1.9.2。
  • 在Windows Shell中,运行gem install qtbindings

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

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

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

    低落

    我通过电子邮件发送了qtbindingsqtruby的维护者。这是完整的故事:
    qtrubyKorundum project提供的软件包。 Korundum提供了到所有KDE的Ruby绑定(bind),而qtruby仅提供了Qt的绑定(bind)。
    qtbindings(github)是对qtruby的修改和重新打包的版本,专门针对跨平台使用进行了优化。我将在其README中复制并粘贴“目标”部分:



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

    回顾

    目前(2011年10月3日),请勿在Windows上使用qtruby gem。使用qtbindings

    您可能可以在其他平台上使用qtruby,在Windows上使用qtbindings,但是可能会遇到麻烦。如果您只是想使用Qt,而不关心其余的KDE,那么qtbindings可能是一个安全的选择。

    QtRuby的维护者正在计划在不久的将来对方法进行一些更新(例如使用git),因此两个项目之间可能会有更多的共享修补程序和更新。

    10-06 01:34