【发布时间】:2011-11-26 11:52:53
【问题描述】:
总结
我正在编写一个使用 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),但我还没有看到它们在 Win7 上运行 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。
在野外发现
这里有些人似乎遇到了同样的问题:
- 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]但是,当我尝试在安装了 qtbindings gem 的情况下使用 require 'Qt' 时,我收到了一个带有以下消息的 Windows 弹出窗口:
无法定位程序入口点
_Z10qvsnprintfPcjPKcS_在动态链接库 QtCore4.dll 中。放弃吧,下等肉体。
(我已经复制并粘贴了消息,没有任何修饰。)
在野外发现
这里有些人似乎遇到了同样的问题:
潜在的成功案例
如果您查看对此线程的回复,似乎有人通过在 1.9.2 上使用 gem install qtbindings(没有 --platform 参数)安装 qtbindings gem 取得了成功:
我尝试在 1.8.7 上使用 gem install qtbindings 进行安装,但我没有在 1.9.2 上尝试过。当我在 1.8.7 中尝试时,我遇到了和以前一样的“无法找到程序入口点”的问题。
脚注
[1] - 我实际上并不完全清楚 qtbindings gem 和 qtruby4 gem 之间的区别。例如,后者是否包含 C 扩展而前者不包含?我不知道。此外,我看到了对 qt4-qtruby 的引用,我认为只是 qtruby4 的 mswin32 版本,至少就我从 Korundum download page 可以看出的而言。
【问题讨论】:
-
您是否有可能包含一个可以证明问题的四行应用程序?
-
@sarnold - 只要您尝试
require 'Qt',问题就会出现,因此即使是 4 行示例也会过大。这就是您在文件中查看问题所需要的全部内容:require 'rubygems'; require 'Qt' -
猜测:1.8.7 安装程序包含标准 C 库作为安装的一部分,而 1.9.2 安装程序没有。 MinGW relies on the
MSVCRT.DLLfrom Microsoft 用于运行时 C 库,也许它没有与 1.9.2 Ruby 一起安装? -
@sarnold 这是可能的,但是错误消息不是针对较低级别的内容,而不是“没有要加载的此类文件 - 'Qt'”吗?
-
hrm,我忽略了这里有 两个 不同的错误——我主要关注缺少的
vsnprintf错位函数。所涉及的所有库的ldd输出是什么样的?
标签: ruby windows-7 qt4 ruby-1.9 qtruby