2008-08-06 9 views
31

すべての必要なdllファイルが.exeに組み込まれたリリースビルドを作成して、ターゲットマシンに再頒布可能なMicrosoftソフトウェアをインストールすることなく、非開発マシンでプログラムを実行できるようにしたいと思います。リリースのためにビジュアルスタジオのC++プロジェクトをどのようにパックしますか?

これを行わないと、アプリケーションの構成が正しくないというエラーメッセージが表示され、再インストールされます。

私は静的にリンクする再配布可能どのように多くのMSのわからないんだけど、あなたは

(動的にリンクではなく)静的リンクに見ていると思います

+0

Inno Setupのようなセットアップウィザードを使用してください。 Inno Setupは特に必要なのは、たくさんのファイルをまとめることだけです。 – sashoalm

答えて

17
  1. プロジェクト選択してください - あなたはMFCをリンクする方法、静的にリンクすることを選択するためのボックスで>一般
  2. - > [プロパティ]
  3. [設定]を選択します。
  4. リンカー - >入力を選択します。追加の依存関係の下で、あなたのアプリがで静的にリンクする必要があります任意のライブラリを追加。
+3

私は何かを逃している可能性があります(私は何も専門家ではありません)が、あなたの手順に従うと、* dll *を* exe *フォルダにすべてパッケージする必要があります。 * exe *ファイルにすべてのものをパッケージ化することは、OPの意図ではありませんか? – Malabarba

+0

@ BruceConnor。ライブラリを静的にリンクすると、それらが実行可能ファイルに含まれます。逆は動的リンクと呼ばれ、起動時に実行可能ファイルが 'dll'(= dunamicリンクライブラリ)を探すようにします。 – danijar

0

あなたはどれを見つけるために探している場合dllのターゲットマシンが見つからない場合、MSDevに付属していたdepends.exeを使用しますが、hereもあります。これをいくつかのターゲットマシンでテストすると、アプリケーションと一緒にパッケージ化する必要のあるdllを知ることができます。あなたは(C/C++の下で - >コード生成)ランタイムライブラリを設定する必要が

10

次のデフォルトの建物の構成に相関し、静的リンク、にすべてのプロジェクトのために:

  • マルチスレッドデバッグ/リリース
  • シングルスレッドデバッグ/リリース

これらのライブラリの「DLL」バージョンとは対照的に、

使用しているライブラリによっては、マージモジュール/フレームワークなどをインストールする必要があります。依存関係の静的LIBバージョンが利用可能かどうかによって異なります。

4

これは重大なセキュリティバグを修正するためにWindowsの更新プログラムによってサービスされるのを防ぐことができて、Microsoft do not recommend that you static link the runtime into your projectことに注意してください。また、メインの.exeファイルと.dllファイルの間にメモリを渡すと、これらの静的リンクが実行時にmalloc/freeの不一致の問題を引き起こす可能性があります。

実行可能ファイルにDLLを含めることができます。実行可能ファイルに.exeファイルをコンパイルせずに、redistツールを実行しなくてもかまいません。これが正常に動作するようです。

広い範囲のWindowsバージョンに配布する場合は、ファイルを2回インクルードする必要があります。新しいOSではマニフェスト定義のディレクトリにファイルが必要です。古いものはすべてのファイルが必要ですプログラムのディレクトリにあります。

関連する問題