別のアプリを実行するアプリを開発していて、次のエラーを受け取りました:
コンピュータにMSVCR100.dllがないため、プログラムを開始できません
私のC#アプリで、この.dllをwindows/system32フォルダーにコピーするこの問題を修正できますか?またはこれを行う別の方法はありますか?
以下のリンクは、MSVCRT100インストーラーの適切なダウンロードを示しています。これは、アプリをインストールする前に顧客に実行してほしいものです。これにより、MSVCRT DLLが適切なディレクトリに適切にインストールされ、すべてのアプリケーションで使用できるようになります。
Microsoft Visual C++ 2010再頒布可能パッケージ(x86) (おそらく、32ビットおよび64ビットOSに必要なもの)
Microsoft Visual C++ 2010再頒布可能パッケージ(x64) (アプリ自体が64ビットの場合のみ)
独自のMSI内のマージモジュールを介してMSVCRT100 DLLを実際にインストールする場合は、MSIをx86バージョンの「c:\ program files\common files\merge modules」ディレクトリにあるMSMにリンクできます( Visual Studio 2010がインストールされていると仮定します)。
C:\Program Files (x86)\Common Files\Merge Modules>dir *CRT*.msm
Volume in drive C has no label.
Volume Serial Number is 60A4-1718
Directory of C:\Program Files (x86)\Common Files\Merge Modules
04/22/2011 01:18 PM 584,192 Microsoft_VC100_CRT_x64.msm
04/22/2011 01:41 PM 571,904 Microsoft_VC100_CRT_x86.msm <-- This is likely the MSM you want if your app is 32-bit.
04/22/2011 01:14 PM 847,360 Microsoft_VC100_DebugCRT_x64.msm
04/22/2011 01:39 PM 801,792 Microsoft_VC100_DebugCRT_x86.msm
他の2つの方法:MSVCRT100.dllをシステムディレクトリにコピーする代わりに、このDLLに依存する、起動しようとしているEXEアプリのディレクトリにコピーします。これはお勧めできませんが、他のアプリを壊すリスクはありません。
別の選択肢。起動しようとしているEXEのソースコードが実際にある場合は、静的にリンクするだけで、この「インストールmsvcrt100.dll」のノイズを完全にバイパスできます。 Visual Studioでは、これはC/C++のプロジェクトのプロパティダイアログ([コード生成]タブ)のオプションです。 「ランタイムライブラリ」を「マルチスレッドDLL」から単に「マルチスレッド」に変更します。これにより、/ MTコンパイラスイッチが追加されます。
起動しようとしているプログラムが何であれ、最初に適切にインストールする必要があります。 Msvcr100.dllは、VS2010を使用してCまたはC++で記述されたプログラム用に展開する必要があるDLLの1つです。セットアップと展開プロジェクトを使用するか、/ MTオプションを使用してプログラムをビルドすることで簡単です。サポートについては、プログラムの所有者にお問い合わせください。
不足しているのはVisual C++ランタイムです。
c#コードからC++アプリケーションを開始していますか?その場合は、クライアントマシンで適切なランタイムが使用可能であることを確認してください。
これをコピーして登録することでこれを修正できるはずです(コマンドライン:regsvr32 "DLLNAME"を使用)。または、実行可能ファイルと一緒に出荷すれば機能するはずです。
警告:ソフトウェアにファイルを含める前に、次の記事を参照してください... http://msdn.Microsoft.com/en-us/library/ms235299.aspx
私はあなたの行動に対して責任を負いません