2012-02-03 9 views
2

Jpegは開発者マシン上で問題ありませんが、アプリケーションを新しいマシンに導入するとサポートされません。スタイルシートで使用されるすべてのjpegファイルはアプリケーションのリソースとともに構築されますが、表示されることはありません。QT:新鮮なWindowsマシンにJPEG機能を展開できません

  1. "qjpeg4.dll"を含む実行可能フォルダの子である "imageformats"フォルダを展開しようとしました。

  2. 私は上記の指定どおり、私の.proファイル内でqjpeg4.libとリンクしようとしました。

まだ良くありません。指定する必要があるコードには何かがありますか?

+0

"imageformats"フォルダは、実行可能フォルダの*子*である必要があります。それは単にタイプミスでしたか? –

+0

はい。それはexeのフォルダの子であり、実行可能ファイル(* .exe)の兄弟です。まだ良いことはありません。 – JasonGenX

+0

あなたの設定は、あなたがそれを記述した通り、まさに私が持っているものです。それは動作するはずです。おそらく 'qjpeg4d.dll'を探しているあなたのアプリのデバッグバージョンをビルドしているのでしょうか?それとも、誤ってデバッグプラグインDLLをデプロイしたのでしょうか? –

答えて

0

これは単なる推測ですが、仮想マシンでは解決できないプラグインの依存関係があるのだろうかと思います。あなたが言ったように、それは単純なファイル/フォルダのものなので、おそらくプラグインDLLを見つけるでしょう。しかし、おそらくdllは依存関係があればそれを解決できないため、読み込みに失敗している可能性があります。

最も可能性の高い原因はC++のランタイムです。それらをアプリケーションディレクトリに並べて配置しているのか、または再配布可能なものを介してインストールしていますか?前者の場合、プラグインは別のディレクトリにあるため、プラグインを見つけることができない場合があります。これを追跡するには、 "Dependency Walker"ツールと "SxSTrace.exe"ツールを使用します。

+0

面白いです。実行可能フォルダに "Microsoft.VC80.CRT"フォルダがあります。私はまたjpegのDLLがある "imageformats"フォルダを持っています。興味深いのは、同じ "Microsoft.VC80.CRT"を "imageformats"フォルダにコピーすると、仮想マシン上でうまく動作するということです。 「Visual Studio 2005の再配布可能ファイル」を探して仮想マシンにインストールすれば、それだけでは機能しません。 「Microsoft.VC80.CRT」には、Microsoftからダウンロードできるものとは異なる内容が含まれているかのように扱われます。非常に奇妙な。 – JasonGenX

+0

これで、Windows用のデプロイメントを誤解していました。正しく動作させるには、テストマシンにmsvc再配布可能ファイルをインストールする必要があります。あなたはあなたのアプリを使ってMSVC redistをコピーしてはいけません。 –

+0

@ RM1970 - うん、WinSxSのロジックは非常に混乱する可能性があります。 C++のランタイムには、多くの落とし穴があります。概要については、http://msdn.microsoft.com/en-us/library/ms235342(v=vs.90).aspxを参照してください。 –

関連する問題