我正在使用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绑定有两个宝石,qtbindings
和qtruby4
(有时也称为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,可能会提供一些线索。
以下是一些似乎遇到同样问题的人:
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可以看出来
答案 0 :(得分:36)
以下步骤适用于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绑定,而qtruby
仅为Qt提供绑定。
qtbindings
(github)是经过修改和重新打包的qtruby
版本,专门针对跨平台使用进行了优化。我将从README这里复制并粘贴“目标”部分:
目标
- 在所有平台上轻松安装Ruby的Qt绑定 使用RubyGems
- 维护捆绑的Windows的最新二进制gem 使用http://qt.nokia.com
的最新版Qt- 减少仅绑定到绑定的范围和维护 Qt SDK提供的库。
- 增加与非Linux平台的兼容性
醇>
虽然Korundum downloads page 提供了mswin32
版本的宝石,但在撰写本文时,他们并未受到任何人的积极审查,因此不应该依赖它。 QtRuby维护者告诉我,在QtRuby 3发布之后,RubyForge页面可能不可靠。
现在(2011年10月3日),请勿在Windows上使用qtruby
gem。使用qtbindings
。
您可能能够在其他平台上使用qtruby
并在Windows上使用qtbindings
,但您可能会遇到麻烦。如果你只是去Qt并且不关心KDE的其余部分,qtbindings
可能是一个安全的赌注。
QtRuby的维护者正计划在不久的将来进行一些方法更新(例如使用git),因此两个项目之间可能会增加共享修复和更新。