概括
我正在编写一个使用 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,qtbindings
和qtruby4
(有时称为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。
在野外发现
以下是一些似乎遇到过同样问题的人:
- Windows 上没有 qtruby 库
- Ruby 1.9.x + Qt4Ruby…。白日梦???
- qtruby4-2.1.0 的 ruby 1.9.1 / win32 中的 qtruby4 LoadError
问题qtbindings
我的应用程序实际上使用了qtbindings
gem,所以我尝试使用gem install qtbindings --platform=mswin32
.[1] 来安装它。但是,当我尝试require 'Qt'
安装qtbindings
gem 时,我收到一个带有以下消息的 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 下载页面可以看出。