私はこれが他の場所で尋ねられて答えられたことを知っていますが、MS Visual Studio 2010で問題があります。C++実行可能ファイルを開発しましたが、VC++ランタイムライブラリがないマシンでリリースバージョンを実行する場合(つまり、msvcr100d.dll)、「msvcr100d.dllがコンピューターにないため、プログラムを開始できません」というエラーが表示されます。
これは2つの理由で奇妙です。
MS VC 2010または再頒布可能パッケージがインストールされていないマシンで実行できるように、ランタイムライブラリを実行可能ファイルにパッケージ化するにはどうすればよいですか?
DLLは更新されないため、これをコピーすることはセキュリティリスクと見なされますが、私の目標はこの実行可能ファイルを短期間に数人の友人に送信することです。
「リリース」モードでコンパイルする場合、CRTのデバッグバージョンは必要ありません。 d
で終わるため、DLLのデバッグバージョンであることがわかります。
さらに、デバッグバージョンはnot再配布可能であるため、実行可能ファイルで「パッケージング」することや、これらのDLLを圧縮することほど簡単ではありません。
「リリース」モードでアプリケーションのallコンポーネントをコンパイルしていること、およびCRTの正しいバージョンと使用する他のライブラリをリンクしていることを確認してください。 (例、MFC、ATLなど)。
あなたはもちろん、msvcr100.dll
(d
接尾辞がないことに注意)およびそれらがまだインストールされていない場合は他のいくつか。友達に Visual C++ 2010 Redistributable (または x64 )をダウンロードするように指示するか、インストーラーを作成してこれをアプリケーションに自動的に含めます。
私にとっては、この状況で問題が発生しました。
VS2012をインストールしましたが、VS2010はもう必要ありません。コンピューターをクリーンにしたかったのですが、VS2010ランタイム実行可能ファイルも削除しました。他のプログラムでは使用できないと考えていました。次に、DLLをプログラムにアタッチしてテストします(プログラムXと呼びましょう)。同じエラーメッセージが表示されました。DLLのコンパイル中に何か間違ったことをしたと思いました。 、本当の問題はDLLをプログラムXに添付し、プログラムXがVS2010でデバッグ情報付きでコンパイルされたことです。それがエラーがスローされた理由です。VS2012でプログラムXエラーはなくなりました。
この問題は MSDNライブラリ で説明されており、Microsoftの再頒布可能パッケージのインストールが役立つと理解しています。
ただし、次のソリューションを(開発者側のソリューションとして)使用できる場合があります。
Visual StudioでProject properties -> Configuration properties -> C/C++ -> Code generation
を開き、オプションRuntime Library
を/MT
ではなく/MD
に変更します
デバッグバージョンのvc ++ライブラリdllは、再配布するためのものではありません!
アプリケーションのデバッグバージョンは再配布できません。また、Visual C++ライブラリDLLのデバッグバージョンは再配布できません。 Visual Studioがインストールされていないコンピューターでアプリケーションをデバッグおよびテストすることのみを目的として、アプリケーションのデバッグバージョンとVisual C++ DLLを他のコンピューターにのみ展開できます。詳細については、「Visual C++ファイルの再配布」を参照してください。
リンクも提供します: http://msdn.Microsoft.com/en-us/library/aa985618.aspx
同じエラーが発生しました。
私はVS2012プロジェクトでVS2010 DLLを参照していました。
VS2012でDLLを再コンパイルすれば、すべて問題ありません。