2009-06-26 6 views
1

QTライブラリを使用して再コンパイルするWindowsスクリーンセーバーがあるので、より多くのプラットフォームで利用できるようになります。 私は、VistaとXPのデプロイに関する問題に直面しています。MSVCx80.dllに依存せずにQTcore4.dllを構築するには?

スクリーンセーバーをMTで静的にコンパイルして、依存性チェッカーを実行します。 結果は次のとおりです。

MyScreensaver.SCRには複数のDLL、QTCORE4.DLLが必要ですが、MSVCx80.DLLは必要ありません。 これまでのところこれは問題ありません。

私の問題は、QTCORE4.DLLにはMSVCP80.DLLとMSVCR80.DLLが必要です。 結果として、私のアプリケーションはVistaシステムでは動作しません。

MS CRT DLLに依存しないように、Microsoftライブラリ(静的にLibcmt.lib?)に静的にリンクするQTCORE4.DLLをビルドできますか?

制限事項:

  • 私は、ユーザーがMS VCの再配布可能をインストールしたくありません。スクリーンセーバーはわずか1 MBで、スクリーンセーバーのためだけに自分のコンピュータで多くの変更を行うようにユーザーに求めているのはうんざりです。

  • スクリーンセーバーがsystem32にインストールされていて、そこに最小限のファイルをインストールしたいので、MS CRT dllをスクリーンセーバーと同じアプリケーションパスに入れるのはやりたくありません。

  • 最後に、私は、DLLを

  • の束は、私はQTの完全な静的コンパイルとリンクを試してみましたが、私が正しく理解している場合、これはで、(許可されていないということを、モノリシックなプログラムを作成することを好むんhttp://www.qtsoftware.com/developer/faqs/why-does-a-statically-built-qt-use-the-dynamic-visual-studio-runtime-libraries-do-i-need-to-deploy-those-with-my-application

様々な方向で解決策を試した後、最も実現可能な1はQTCore4.dllとQTGui4.dllを使用することであるようだが、それらを持つ:LGPL)とは、また、これに応じて推奨されていませんMSVCRTに静的にリンクされています。この方法では、私のプログラムもQT DLLもMSVCRT DLLに依存しません。

解決方法はありますか? (私はQTプログラミングに新しいです)

が、私は彼らがあなたのアプリケーションの一部は、/ MD(D)および/ MT(D)との部品を使用してコンパイルされることを協調していると思う、 マイケル

+0

アップデート:私は静的にQTを構築している 、私はリンカQTcore.libに含まれており、/ MTで静的にも私のapplitationを構築してきました。 私は、スクリーンセーバーがMSVCR80.DLLに依存していることを確認しました。これは、おそらくQT(QTcore.lib)の静的ビルドが依存しているためです。 MSVCR80.DLLは私にとって障壁です。上記のように私はXPとVistaにはデプロイできません。 質問は今です: MSVCR80.DLLに依存せずにQTアプリケーションを構築する方法はありますか? 助けてくれてありがとう マイケル – Mike

答えて

1

をありがとうしかし、あなたが/ MT(d)を使うのはかなり安全です。

+0

ありがとうシェイ、私は静的なリンクを作ることを再試行します。前回私が静的なリンクを試みたとき、アプリケーションは終了時にエラーを引き起こしていました。エラーはコードの終了後であり、静的リンクのためにこれが問題であると考えました。 したがって、QT DLLをMS CRTライブラリに静的にリンクする際の回答があるかどうかを確認するために少し待つことにします。これを行う方法があるなら、私はそのように行くことを好むでしょう。 – Mike

1

あなたは2つのオプションがあります。

  • これらの依存関係がMicrosoft Visual C++ Runtimeライブラリの一部である、あなたはのInstallShieldでそのライブラリを展開することができ、ユーザーは黙ってそれをインストールし、MSVCRTライブラリデフォルトではWindowsで含まれていない、あなたが必見 installshieldにランタイムライブラリを展開し、アプリケーションディレクトリにQt*.dllのDLLをコピーします。

  • ランタイムとQtの主な依存関係のStatic Linkingを使用してください。このオプションには実行可能なファイルが1つありますが、Qtの静的コンパイルには商用利用のQt商用ライセンスが必要です。

関連する問題