如何在Windows 7上使用ruby 1.9.2运行Qt4?

时间:2011-09-28 01:00:11

标签: ruby windows-7 qt4 ruby-1.9 qtruby

摘要

我正在使用Qt4编写一个Ruby 1.9.2应用程序用于GUI,我想在Linux,OS X和Windows上分发它。除了我的Windows 7 64位盒子外,我的应用程序运行正常。

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

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而无需帮助。

在野外发现

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

qtbindings

的问题

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

  

无法找到过程入口点_Z10qvsnprintfPcjPKcS_   在动态链接库QtCore4.dll中。只是放弃,下等的肉体生物。

(我没有任何修饰地复制和粘贴信息。)

在野外发现

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

潜在的成功案例

如果你查看对这个帖子的回复,那么有人在{1.9}上使用qtbindings(没有gem install qtbindings参数)安装--platform gem时似乎取得了成功:

我尝试在1.8.7上使用gem install qtbindings安装,但我已经尝试使用1.9.2。当我用1.8.7尝试它时,我遇到了与以前一样的“程序入口点无法定位”问题。

脚注

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

1 个答案:

答案 0 :(得分:36)

解决方案

以下步骤适用于Windows 7:

  1. 通过the official download page安装Ruby 1.9.2。
  2. 在Windows shell中,运行gem install qtbindings
  3. 简单的例子(require 'rubygems'; require 'Qt')现在应该可以使用。

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

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

    The Low-Down

    我通过电子邮件发送了qtbindingsqtruby的维护者。这是完整的故事:

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

    qtbindingsgithub)是经过修改和重新打包的qtruby版本,专门针对跨平台使用进行了优化。我将从README这里复制并粘贴“目标”部分:

      

    目标

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

    虽然Korundum downloads page 提供了mswin32版本的宝石,但在撰写本文时,他们并未受到任何人的积极审查,因此不应该依赖它。 QtRuby维护者告诉我,在QtRuby 3发布之后,RubyForge页面可能不可靠。

    回顾

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

    可能能够在其他平台上使用qtruby并在Windows上使用qtbindings,但您可能会遇到麻烦。如果你只是去Qt并且不关心KDE的其余部分,qtbindings可能是一个安全的赌注。

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