1. ホーム
  2. visual-studio

[解決済み] Visual Studio 2015でexeファイル(ucrtbased.dll)が実行できないのはなぜですか?

2022-03-14 19:40:51

質問

私はVisual Studio 2015をインストールし、いくつかのコードでWin32プロジェクトを作成しました。私はそれを正常にコンパイルしましたが、私はいくつかのucrtbased.dllを持っていないため、私はexeファイルを起動することができません...だから私はそれを解決する方法を教えてください。

編集する 英語に相当するメッセージは ucrtbased.dllがあなたのコンピュータにないため、プログラムを開始できません。この問題を解決するために、プログラムを再インストールしてみてください "。

解決するには?

この問題は、VS 2015のサイレントコピーに失敗したものです。 ucrtbased.dll (デバッグ) と ucrtbase.dll (release)をVisual Studioのインストール時に適切なシステムフォルダーにコピーしてください。(または、インストール時に "Common Tools for Visual C++ 2015" を選択していない)。このため、再インストールすることで解決する場合があります。ただし、再インストールは極端な手段です...これは完全な再インストールをしなくても直る可能性があります。

まず、根本的な問題はどうでもよくて、単にこの をコピーするだけです。 ucrtbased.dll から C:\Program Files (x86)\Windows Kits\10\bin\x86\ucrt\ucrtbased.dll (32bitデバッグ用) を実行ファイルと一緒にアプリケーションの \debug ディレクトリにコピーしてください。そうすれば、必ず見つかり、エラーは解消されます。しかし、これは次の場合にのみ機能します。 プロジェクトで使用されます。

より永続的な解決策としては ucrtbased.dllucrtbase.dll を正しいシステムフォルダにコピーしてください。これで、これらのファイルを \WindowsSystem32 と \SysWOW64 にコピーし始めれば、それだけでOKです。 かもしれない は問題を解決します。しかし、これは最良の解決策ではありません。そもそもこれが失敗したのには理由があり、この方法で特定の.dllの使用を強制すると、大きな問題を引き起こす可能性があります。

最良の解決策は、コントロールパネル --> プログラムと機能 --> Microsoft Visual Studio 2015 --> 修正 を開くことです。そして、 "Visual C++ --> Common Tools for Visual C++ 2015"のチェックをはずします。次へ」をクリックし、「更新」をクリックすると、数分後、Common Toolsがアンインストールされているはずです。 その後、今度はCommon Toolsをインストールすることを繰り返します。アンチウィルスが無効になっていること、他のタスクが開かれていないことなどを確認すれば、うまくいくはずです。この方法は、これらのファイルがあるべき場所に正確にコピーされることを保証する最良の方法です。


エラーコード : インストーラが -2147023293 のような不可解なエラー番号を返した場合、オンラインのフリー10進-16進コンバータで16進数に変換できることに留意してください。このエラーの場合、0xFFFFFF80070643 となり、FF を削除して "0x80070643" をググれば、`0x80070643 - インストールキャッシュまたは ISO が破損しています' を意味します。


なぜ ucrtbased.dll が必要なのか? : という名前のDLLがあればOKです。 クルト は、C-Run-Time モジュールまたはライブラリです。 マイクロソフトの説明 . 現在、CRTには多くのバリエーションが存在します。これらは、マイクロソフトでコンパイルされたすべての実行ファイルが使用する必須ヘルパーコードを含んでおり、増え続けるOSバージョンとハードウェア上で実行ファイルが動作するように"shim"します。 MSVCコンパイラを使用している場合、コンパイル時に関連するCRT DLLが自動的にリンクされます。 (コンパイル時にDLLが見つからない場合は、リンクエラーが発生します)。

一つの方法として ではなく DLL を必要とする場合、プロジェクトに "静的リンク" することです。これは、本質的に ucrtbased.dll そして インクルード を実行ファイルに追加してください。の大きさだけファイルサイズが大きくなります。 ucrtbased.dll .

ちなみに、もしあなたがMSVCのプログラム(たいていは他の人、以前のOSバージョンでコンパイルした古いプログラム、あるいは別のマシンのあなたのプログラム)を実行したときに、quot;Microsoft Visual C++ 20xx Redistributable" または "run-time" が必要だというエラーメッセージを出して起動しないなら、それは必要な *crt*.dll ファイルを作成します。 その特定の再配布可能パッケージをインストールすれば、DLLがインストールされ、プログラムが実行できるようになります...あるいは、少なくともそのエラーを乗り越え、別のDLLが見つからないことを警告します。

もしあなたがこの DLL 地獄に陥った場合、どの DLL がまだ足りないかを表示する高度なツールである "dependency walker" でググってみてください。これは通常、プロフェッショナルなソフトウェアでは起こりません。なぜなら、彼らの(大規模でバンドルされた)インストーラは、不足している依存ライブラリ(CRTを含む)をチェックし、最初にそれらをインストールするからです。