5

オープンソースの C++ アプリケーションFrhedをダウンロードしてコンパイルしました。

コンパイルしたバージョンを実行すると、MSVCR100 と他のいくつかの dll ファイル (Visual C++ 再頒布可能ファイルの一部) が必要になります。ただし、プリコンパイル済みの元の Frhed 実行可能ファイルを実行すると、C++ 再頒布可能パッケージがインストールされていなくても実行されます。

プログラムを C++ 再頒布可能ライブラリからリンク解除するには、コンパイル オプションを変更する必要がありますか?

4

2 に答える 2

14

元のプログラムはおそらく静的にリンクされていますが、実行可能ファイルを動的にリンクしようとしているため、ファイルは小さくなりますが、内部の関数MSVCR100.dll(Microsoft C ランタイム ライブラリの v10) に依存しています。あなたは静的にリンクしていました。

DLL を静的にリンクするには、プロジェクトのプロパティに移動し、ビルド モードを からMDに変更しますMT。Visual Studio 2010/2012 では、そのプロジェクト プロパティは C/C++ -> コード生成 -> ランタイム ライブラリです。

于 2011-08-08T01:29:32.057 に答える
7

短い答えはイエスです、長い答えは、まあ、長いです。

ライブラリmsvcr100.dll、CランタイムのDLL実装の10.0バージョン(つまり、Visual Studio 2010バージョン)であり、/MDコンパイルオプションを使用して要求した可能性があります。動的にリンクされたバージョンのランタイムの使用を回避するには、代わりに/ MTオプションを使用して、ランタイムを静的にリンクします。

または、プログラムと一緒にmsvcr100.dll(およびその他のファイル)を再配布することもできます。

于 2011-08-08T01:38:03.150 に答える