24

概要

Linux、OS X、および Windows で配布したい GUI に Qt4 を使用して Ruby 1.9.2 アプリを作成しています。Windows 7 64 ビット ボックス以外のすべてでアプリを正常に実行しています。

Win7 + Qt4 + 1.8.7 の動作例はありますが、明らかに Win7 + Qt4 + 1.9.2 ではありません。Ruby-Qt バインディング用の 2 つの gemqtbindingsqtruby4( と呼ばれることもあります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 をビルドするのを支援しているためです。

野生で発見

以下は、同じ問題に遭遇したと思われる一部の人々です。

問題qtbindings

私のアプリは実際にqtbindingsgem を使用するので、代わりにgem install qtbindings --platform=mswin32.[1]を使用してそれをインストールしようとしrequire 'Qt'ましたが、qtbindingsgem をインストールしようとすると、次のメッセージが表示された Windows ポップアップが表示されました。

_Z10qvsnprintfPcjPKcS_ダイナミック リンク ライブラリ QtCore4.dll にプロシージャ エントリ ポイントが見つかりませんでした。諦めろ劣等生肉。

(私はメッセージをまったく装飾せずにコピーして貼り付けました。)

野生で発見

以下は、同じ問題に遭遇したと思われる一部の人々です。

潜在的な成功事例

このスレッドへの返信を見ると、誰かが(引数なしで) qtbindings1.9.2 に gem をインストールすることで成功したようです:gem install qtbindings--platform

gem install qtbindings1.8.7ではインストールしてみましたが、1.9.2ではまだ試していません1.8.7で試してみると、以前と同じ「プロシージャエントリポイントが見つかりませんでした」という問題に遭遇しました。

脚注

qtbindings[1] -ジェムとジェムの違いについて、私は実際には完全に明確ではありませんqtruby4。たとえば、後者には C 拡張機能が含まれていて、前者には含まれていないのでしょうか? わからない。さらに、 への参照を見たことがありますがqt4-qtruby、これは の mswin32 バージョンに過ぎないと思いますqtruby4

4

1 に答える 1

36

ソリューション

次の手順はWindows7で機能します。

  1. 公式ダウンロードページからRuby1.9.2をインストールします。
  2. Windowsシェルで、を実行しますgem install qtbindings

簡単な例(require 'rubygems'; require 'Qt')が機能するはずです。

バイナリgemはWindowsプラットフォーム専用に提供されているため、追加の手順は必要ありません。したがって、大きなバイナリをダウンロードするため、このgem install qtbindings手順には数分かかりますが、Qtアプリを必要として実行するために必要なすべての部分が含まれています。

Windowsでのソースからのコンパイルがサポートされており、プロジェクトのREADMEファイルに記載されています。

ローダウン

qtbindingsとのメンテナにメールを送りましたqtruby。これが完全な話です:

qtrubyコランダムプロジェクトが提供するパッケージです。KorundumはすべてのKDEにRubyバインディングをqtruby提供しますが、Qtのみにバインディングを提供します。

qtbindingsgithubqtruby )は、クロスプラットフォームでの使用に合わせて特別に最適化された、変更および再パッケージ化されたバージョンです。ここで、 READMEから「目標」セクションをコピーして貼り付けます。

目標

  1. RubyGemsを使用してすべてのプラットフォームにRuby用のQtバインディングを簡単にインストールできるようにするため
  2. http://qt.nokia.comの最新バージョンのQtにバンドルされているWindows用の最新のバイナリgemを維持するため
  3. バインディングの範囲とメンテナンスを減らして、QtSDKによって提供されるライブラリにのみバインドするようにします。
  4. Linux以外のプラットフォームとの互換性を高めるため

コランダムのダウンロードページに その宝石のバージョンがありますmswin32が、この記事の執筆時点では、誰も積極的に精査していないため、信頼するべきではありません。QtRubyのメンテナから、RubyForgeページはQtRuby3がリリースされるまで信頼できない可能性があるとの連絡がありました。

要約

qtruby現在(2011年10月3日)、 Windowsでgemを使用しないでください。を使用しqtbindingsます。

他のプラットフォームやWindowsでも使用できるかもしれませんが、おそらく問題が発生するでしょう。Qtを利用するだけで、KDEの残りの部分を気にしない場合は、おそらく安全な方法です。qtrubyqtbindingsqtbindings

QtRubyのメンテナは、近い将来(gitの使用など)いくつかの方法論の更新を計画しているため、2つのプロジェクト間で共有される修正と更新が増える可能性があります。

于 2011-10-04T00:16:37.137 に答える