概要
我正在使用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 ,qtbindings
和qtruby4
(有时称为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,它可能提供一些线索。
在野外发现
以下是一些似乎遇到过相同问题的人:
qtbindings
的问题我的应用程序实际上使用了
qtbindings
gem,因此我尝试使用gem install qtbindings --platform=mswin32
安装它。[1]但是,当我尝试在安装了require 'Qt'
gem的情况下使用qtbindings
时,出现了带有以下消息的Windows pop 窗口:(我已经复制并粘贴了邮件,没有任何修饰。)
在野外发现
以下是一些似乎遇到过相同问题的人:
潜在的成功故事
如果您看一下对此线程的回复,那么似乎有人通过在1.9.2上使用
qtbindings
(没有gem install qtbindings
参数)安装了--platform
gem取得了成功:我尝试在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:
gem install qtbindings
。 普通的示例(
require 'rubygems'; require 'Qt'
)现在应该可以工作了。不需要额外的步骤,因为仅为Windows平台提供了二进制gem 。因此,
gem install qtbindings
步骤将在下载大型二进制文件时花费几分钟,但是它包含了要求和运行Qt应用程序的所有必需部分。支持从Windows上的源代码进行编译,并记录在项目的README文件中。
低落
我通过电子邮件发送了
qtbindings
和qtruby
的维护者。这是完整的故事:qtruby
是Korundum 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),因此两个项目之间可能会有更多的共享修补程序和更新。