Visual Studio C++ プロジェクトをリリース用にどのようにパックしますか?

StackOverflow https://stackoverflow.com/questions/3230

  •  08-06-2019
  •  | 
  •  

質問

必要なすべての dll ファイルを .exe に含めたリリース ビルドを作成して、ターゲット マシンに Microsoft 再頒布可能ファイルをインストールせずにプログラムを非開発マシンで実行できるようにする方法を考えています。

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

役に立ちましたか?

解決

  1. 「プロジェクト」→「プロパティ」を選択します
  2. 「構成」→「一般」を選択します
  3. MFC をリンクする方法のボックスで、静的にリンクすることを選択します。
  4. 「リンカー」→「入力」を選択します。下 追加の依存関係, 、アプリが静的にリンクする必要があるライブラリを追加します。

他のヒント

すべてのプロジェクトのランタイム ライブラリ ([C/C++] -> [コード生成]) を静的リンクに設定する必要があります。これは、次のデフォルトのビルド構成に関連付けられます。

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

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

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

を注意 Microsoft では、ランタイムをプロジェクトに静的にリンクすることはお勧めしません。, これにより、重大なセキュリティ バグを修正するための Windows Update によるサービスが受けられなくなるためです。また、メインの .exe ファイルと .dll ファイルの間で、各静的リンクがランタイムにリンクしているかのようにメモリを渡している場合、潜在的な問題が発生し、malloc/free の不一致の問題が発生する可能性があります。

DLL を .exe にコンパイルしたり、再配布ツールを実行したりせずに、実行可能ファイルに DLL を含めることができます。これは私が行っていることであり、正常に動作するようです。

唯一の問題は、Windows の幅広いバージョンに配布する場合、ファイルを 2 回インクルードする必要があることです。新しい OS ではマニフェストで定義されたディレクトリにファイルが必要ですが、古い OS ではすべてのファイルがプログラム ディレクトリに必要です。 。

(動的リンクではなく)静的リンクを検討しているでしょう。

静的にリンクされている MS 再頒布可能ファイルがどれだけあるのかはわかりません。

ターゲット マシンに不足している DLL を調べたい場合は、MSDev に付属していた depend.exe を使用してください。 ここ. 。これをいくつかのターゲット マシンでテストすると、アプリケーションにどの DLL をパッケージ化する必要があるかがわかるはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top