web-dev-qa-db-ja.com

VS 2010 C ++を使用してexeをビルドした後、MSVCP100.dllが見つかりません

インストールを必要とせず、管理者以外でも使用できるアプリケーションを設計しました。この機能を失いたくないのですが、プログラムしたコンピューター以外のコンピューターで.exeを使用すると、MSVCP100.dllが見つからないためにファイルの実行が妨げられているというエラーが表示されます。

私はここで何が間違っているのですか?リリースビルドにファイルを含めるにはどうすればよいですか?

ありがとう!

18
CodingIsAwesome

ランタイムDLLにリンクするのではなく、C/C++ランタイムに静的にリンクするようにプロジェクトを構成します。

  • 構成プロパティ| C/C++ |コード生成|ランタイムライブラリ

マルチスレッド(/ MT)(またはデバッグビルドのマルチスレッドデバッグ(/ MTd))を選択します。

別の方法として、 http://msdn.Microsoft.com/en-us)に記載されている手法を使用して、C/C++ランタイムのxcopy展開を取得できるはずですDLL /library/ms235291.aspx 「VisualC++ライブラリDLLをプライベートアセンブリとして展開する」という見出しの下。ネイティブC++プログラムのxcopyインストールが必要な場合は、静的にリンクする方が一般的に簡単なので、この手法は試していません。

30
Michael Burr

http://msdn.Microsoft.com/en-us/library/ms235299.aspx

Visual C++でコンパイルされたアプリを配布するには、アプリが使用するC++ランタイム.dllを配布する必要があります。あなたの場合、私はあなたがただフォルダを配布したいと思うので、ここの指示に従ってください(あなたのアプリのために適切に修正されました):

http://msdn.Microsoft.com/en-us/library/dd293565.aspx

または、msvcp100.dllを.exeと一緒にアプリケーションのディレクトリにコピーするだけで、準備は完了です。

32ビットのmsvcp100.dllC:\Windows\SysWOW64\にあります

64ビットのmsvcp100.dllC:\Windows\System32\にあります

4
MSN

私はここで何が間違っているのですか

あなたが持っていたのはdll地獄でした。以前のコンパイラとの動的リンケージを意図せずに使用していましたが、ほとんどのターゲットシステムで適切なCランタイムがありました。 Windowsには多くの場合VC 6 CRTが含まれ、最近ではSP VC7&8CRTも含まれています。

最新のVCコンパイラに変更すると、ほとんどのシステムには新しいVCランタイムがプリインストールされていません。

Michael Burr が言うように、静的にリンクすると、「インストールなし」に戻すことができます。

または、CRTとマニフェストを同じフォルダーに含めることもできますが、それでもインストールは必要ありません。

または、VS2010のvcredist.exeを含めて、1回限りのインストールを行います

3
Greg Domjan

インストールする必要があります Microsoft Visual C++ 2010再頒布可能パッケージ

1