インストールを必要とせず、管理者以外でも使用できるアプリケーションを設計しました。この機能を失いたくないのですが、プログラムしたコンピューター以外のコンピューターで.exeを使用すると、MSVCP100.dllが見つからないためにファイルの実行が妨げられているというエラーが表示されます。
私はここで何が間違っているのですか?リリースビルドにファイルを含めるにはどうすればよいですか?
ありがとう!
ランタイムDLLにリンクするのではなく、C/C++ランタイムに静的にリンクするようにプロジェクトを構成します。
マルチスレッド(/ MT)(またはデバッグビルドのマルチスレッドデバッグ(/ MTd))を選択します。
別の方法として、 http://msdn.Microsoft.com/en-us)に記載されている手法を使用して、C/C++ランタイムのxcopy展開を取得できるはずですDLL /library/ms235291.aspx 「VisualC++ライブラリDLLをプライベートアセンブリとして展開する」という見出しの下。ネイティブC++プログラムのxcopyインストールが必要な場合は、静的にリンクする方が一般的に簡単なので、この手法は試していません。
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.dll
はC:\Windows\SysWOW64\
にあります
64ビットのmsvcp100.dll
はC:\Windows\System32\
にあります
私はここで何が間違っているのですか
あなたが持っていたのはdll地獄でした。以前のコンパイラとの動的リンケージを意図せずに使用していましたが、ほとんどのターゲットシステムで適切なCランタイムがありました。 Windowsには多くの場合VC 6 CRTが含まれ、最近ではSP VC7&8CRTも含まれています。
最新のVCコンパイラに変更すると、ほとんどのシステムには新しいVCランタイムがプリインストールされていません。
Michael Burr が言うように、静的にリンクすると、「インストールなし」に戻すことができます。
または、CRTとマニフェストを同じフォルダーに含めることもできますが、それでもインストールは必要ありません。
または、VS2010のvcredist.exeを含めて、1回限りのインストールを行います
インストールする必要があります Microsoft Visual C++ 2010再頒布可能パッケージ 。