37

これは他の場所で質問され、回答されていることは知っていますが、MS Visual Studio 2010 で問題が発生しています。C++ 実行可能ファイルを開発しましたが、VC++ ランタイム ライブラリを持たないマシンでリリース バージョンを実行すると、 (つまり、msvcr100d.dll)、「コンピューターに msvcr100d.dll が見つからないため、プログラムを開始できません」というエラーが表示されます。

これは、次の 2 つの理由から奇妙です。

  • 再配布可能ファイルのデバッグ バージョンとリンクしようとしているのはなぜですか?
  • この修正を適用して、ランタイム ライブラリの設定を /MD (マルチスレッド DLL) ではなく /MT に設定してみましたが、問題が悪化するだけでした (msvcr100d.dll を手動でコピーすると、msvcp110 が見つからないと言われました)。 .dll)。

MS VC 2010 または再配布可能ファイルがインストールされていないマシンで実行できるように、ランタイム ライブラリを実行可能ファイルと一緒にパッケージ化するにはどうすればよいですか?

DLL が更新されることはないため、DLL のコピーを含めることはセキュリティ リスクと見なされることは承知していますが、私の目標は、この実行可能ファイルを数人の友人に短期的に送信することです。

4

6 に答える 6

43

「リリース」モードでコンパイルする場合、CRT のデバッグ バージョンは絶対に必要ありません。.dl で終わるため、DLL のデバッグ バージョンであることがわかりますd

さらに言えば、デバッグ バージョンは再配布可能ではないため、実行可能ファイルと一緒に "パッケージ化" したり、これらの DLL を zip 圧縮したりするほど簡単ではありません。

アプリケーションのすべてのコンポーネントを「リリース」モードでコンパイルしていること、および正しいバージョンの CRT と使用するその他のライブラリ (MFC、ATL など) をリンクしていることを確認してください。

もちろん、require (接尾辞がないことに注意してください)と、まだインストールされていない場合は他のいくつかが必要になります。友達にVisual C++ 2010 Redistributable (またはx64 ) をダウンロードするように指示するか、インストーラーを作成してアプリケーションに自動的に含めます。msvcr100.dlld

于 2012-05-02T02:13:08.800 に答える
2

私にとっては、この状況で問題が発生しました:

VS2012 をインストールしましたが、VS2010 はもう必要ありません。私は自分のコンピューターをきれいにしたいと思い、VS2010 ランタイム実行可能ファイルも削除しました。他のプログラムはそれを使用しないだろうと考えていました。次に、DLL をプログラム (プログラム X と呼びましょう) にアタッチしてテストしたいと思いました。同じエラーメッセージが表示されました。DLL をコンパイルするときに何か間違ったことをしたと思いました。ただし、実際の問題は、DLL をプログラム X にアタッチし、プログラム X がデバッグ情報を使用して VS2010 でコンパイルされたことです。そのため、エラーがスローされました。VS2012 でプログラム X を再コンパイルしたところ、エラーはなくなりました。

于 2013-11-20T10:02:52.663 に答える
2

この問題はMSDN ライブラリで説明されており、Microsoft の再頒布可能パッケージをインストールすると解決できると理解しています。

ただし、次のソリューションを使用できる場合もあります (開発者側のソリューションとして)。

Visual Studio で、Project properties -> Configuration properties -> C/C++ -> Code generation オプションRuntime Libraryを開いて、/MT代わりにに変更します/MD

于 2015-04-28T13:04:21.467 に答える
1

vc++ ライブラリ dll のデバッグ バージョンは、再配布することを意図していません。

アプリケーションのデバッグ バージョンは再配布できず、Visual C++ ライブラリ DLL のデバッグ バージョンは再配布できません。アプリケーションのデバッグ バージョンと Visual C++ DLL は、Visual Studio がインストールされていないコンピューターでのアプリケーションのデバッグとテストのみを目的として、他のコンピューターにのみ展開できます。詳細については、「Visual C++ ファイルの再配布」を参照してください。

リンクも提供します:http://msdn.microsoft.com/en-us/library/aa985618.aspx

于 2014-10-10T13:50:08.303 に答える
1

同じエラーが発生しました。

VS2012 プロジェクトで VS2010 DLL を参照していました。

VS2012 で DLL を再コンパイルしただけで、すべて問題ありません。

于 2013-12-23T20:34:31.837 に答える