2012-01-07 9 views
1

QTが新しく、QTライブラリを出力バイナリに静的にリンクすることはできません。 QTディレクトリの外で出力ファイルを実行すると、The program can't start beacuse QtCored4.dll is missingが得られます。明らかに、QTはライブラリを動的にリンクしており、私が持っていない.dllを要求しています。 QTのライブラリを静的バイナリに静的にコンパイルする方法はありますか?QTのdllは必要ありません。これは私のプロジェクトではすでに11ドルまでですので、私はこれを尋ねます。ソフトウェアで配布する必要があるファイルの量を減らしたいと思っています。サイズは私にとっては問題ではありません。ありがとう。Windowsで静的なQTアプリケーションをコンパイルする

CONFIG += static.proファイルに追加しようとしましたが、役に立たなくなりました。

答えて

3

まず、商用ライセンスを購入していない限り、静的にQtにリンクすることはできません。これを行うには、非商用バージョンが配布されているLGPLライセンスに違反することになります。私はあなたの苦痛を感じます、私は多くの、私のソフトウェアと一緒に行くDLLがたくさんあります。

ありがたいことに、インストーラを使用した場合はおそらくDLLがあります。ソースからビルドする必要はありません。自動的に実行されているはずです。あなたはQt \ Version \ binにあります。ここでQtはあなたがインストールしたディレクトリで、versionはインストールしたQtのバージョンです。たとえば、G:\ Libraries \ Qt \ 4.7.1 \ binにあります。

しかし、私はOpenGLを使って作業するためにDLLのビルドワンの1つを持っていないことにいくつかの問題があり、そうするために再構築を行いました。私はVisual Studioのバージョンを切り替えたときもそうしました。私はそれがそうすることができて便利だと思う、それは簡単です、Qtのディレクトリでターミナルを開いて、実行します。XXXはあなたが実行するビルドの種類を表し

configure.exe -platform XXX' 

。有効なオプションには、win32-msvc2005、win32-msvc2008、win32-msvc2010があります。だから私は使用:

configure.exe -platform win32-msvc2010' 

その他のオプションを詳細にhereあります。

set PATH=%cd%\bin;%PATH% 

全体の手順は、時間をおよそ取る必要があります。これらの命令は、ソースコードをダウンロードした場合は、しかし、あなたはそのようなパス変数にカレントディレクトリを追加する必要があります適用されます。

+0

の速度に応じていくつかの時間を待って、私はLGPLは、静的リンク、さらに燃料私の憎しみをため制限は思いもしませんでしたGPL \ LGPLライセンス。怒りを脇に、あなたのようにすべてのdllを含めます。これはばかげているかもしれませんが、すべてのQT dllを1つにまとめる方法はありますか? – user99545

+0

@ user99545それは痛みですが、それは無料で数千時間の仕事を費やして私たちが支払う代償です:)。唯一の愚かな質問は、あなたが尋ねていないものですが、それらを1つに転がすことは、1つの血まみれの大きなDLLになります!私はそれが完了していないと確信しており、可能ではありません。 私は通常、すべてのDLLをDLLディレクトリに置きます。何が使用されているのかを知る必要があるときは、[Dependancy Walker](http://www.dependencywalker.com/)を使用して、配布前に未使用のDLLを切り取るリストを整えます。 –

+0

ニースティップ、ツールリンク+1。 – user99545

2

QTのソースパケットをダウンロードしてコンパイルする必要があります。時間がかかりますが、実際には複雑ではありません。

  • ダウンロードして解凍しますQTソース
  • スタートコンパイラシェル(Visual Studioまたはmingwの)
  • はQTのソースディレクトリでのconfigureを実行する - ここ
  • 静的コンパイル実行してください(Visual Studioのためのフラグを追加NMAKE)
  • がマシン
関連する問題