38

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

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

4

6 に答える 6

18
  1. [プロジェクト]->[プロパティ]を選択します
  2. [構成]->[一般]を選択します
  3. MFCをリンクする方法のボックスで、静的にリンクすることを選択します。
  4. [リンカー]->[入力]を選択します。[追加の依存関係]で、アプリが静的にリンクする必要のあるライブラリを追加します。
于 2008-08-13T18:10:34.870 に答える
10

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

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

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

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

于 2008-08-07T21:11:52.817 に答える
4

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

DLL を .exe にコンパイルせずに、再配布ツールを実行せずに、DLL を実行可能ファイルに含めることができます。

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

于 2008-09-09T11:41:09.910 に答える
0

ターゲット マシンで欠落している dll を探している場合は、MSDev に付属していた depends.exe を使用しますが、ここでも見つけることができます。いくつかのターゲット マシンでこれをテストすると、どの dll をアプリケーションにパッケージ化する必要があるかがわかります。

于 2008-08-07T06:40:28.177 に答える
0

あなたは静的リンクを探しているでしょう(動的リンクではなく)

MS 再頒布可能パッケージのどれだけが静的にリンクされているかはわかりません。

于 2008-08-06T12:10:55.920 に答える