web-dev-qa-db-ja.com

MSVCR90.DLLが見つかりませんでした

このような質問がすでに出されていることは知っていますが、状況は少し異なり、その問題に対するすべての答えが私にはうまくいきませんでした。

VS2008でいくつかのCコードをコンパイルしようとしていますが、exeが作成されません。また、f5で実行しようとすると、次のようになります。

MSVCR90.DLLが見つからなかったため、このアプリケーションを起動できませんでした。

私はグーグルをしました、そしてそれは私のc ++再配布可能パッケージがインストールされなかったからだと言いました。だから私はそれをインストールし、すべてを再起動して再試行しました。しかし、残念ながら、私はまだ同じエラーを受け取ります。誰かがこれを修正する方法の手がかりを持っていますか?

12
The.Anti.9

VS2008のインストールに問題があるか、DLL検索パスに問題があるようです。VS2008のインストール時にMSVCR90.DLLがインストールされるため、再配布可能なパッケージを追加でインストールする必要はありません。 。

まず、PATH環境変数をチェックして、一部のエントリを壊すgobbledydookが含まれていないことを確認します。問題が見つからない場合は、VisualStudioをアンインストールして再インストールします。

MSVCR90.DLL(およびそのような他のDLL)を検索して、Windows/System32フォルダーに移動することもできます。

今すぐ始めたい場合は、ランタイムライブラリに静的にリンクするようにプロジェクトを変更することもできます。そうすれば、そのDLLを読み込もうとさえしません。プロジェクト設定の[構成プロパティ]-> [C/C++]-> [コード生成]に移動し、ランタイムライブラリをマルチスレッドDLLからマルチスレッド(またはそうでないオプション)に変更します。 DLLで終了します)。

11
Gerald

[全般]タブで、プロジェクトの構成を確認するためのいくつかの事項を次に示します。

  • .1構成タイプ-あなたの場合はexe。
  • .2 MFCの使用:これがMFCアプリケーションの場合、次のようにすると移植性が向上する可能性があります。静的ライブラリでMFCを使用します。
  • .3 ATLの使用-atlを使用していない(またはわからない)場合は、ATLを使用しないと言います。
  • .4 C/C++->ランタイムライブラリの下:マルチスレッドデバッグ(デバッグバージョンの場合)またはマルチスレッド(リリースバージョンの場合)と言います。

何かがすでに定義されているという特定のリンカーエラーが発生した場合:これは、異なるランタイムリンクで構築されたアプリの一部(exeにリンクされている個別のライブラリ)があることを意味します:

あなたはできる:

  • これらのライブラリが、アプリケーションと同じバージョンのVisualStudioでコンパイルされていることを確認してください。

  • 静的ランタイムを使用するようにこれらのプロジェクトを変更します:C/C++->コード生成->ランタイムライブラリ:/ MTまたはMTd(上記の#4と同じ)

  • それでも特定のエラーが発生する場合は、特定のライブラリを無視するようにリンカに指示してみてください。[リンカ]-> [特定のライブラリを無視]に移動し、無視するライブラリを配置します。これは、「libcmt.lib」または「libcmtd.lib」で最も一般的です。 'd'で終わるlibが通常デバッグバージョンであることを知っておくことも重要です。リリースビルドを作成していて、「libcmtd.libですでに定義されている」場合は、どこかでリリースライブラリをデバッグライブラリにリンクしていることを意味します。

6
Klathzazt

.exeに関連付けられているマニフェストファイルを削除すると、同じエラーが発生します。

MSVCR90.dllはsystem32ではなく、side-by-sideフォルダーにインストールされるため、マニフェストが必要です。

4
james

私はこれに噛まれたばかりで、 このページ 私は再び働きました。

重要なのは、デバッグ構成でMSVCRTおよびMSVCR90ライブラリを無視することです。リンカ->入力->特定のライブラリを無視する設定を設定して、以下を含めます。

  • MSVCRT
  • MSVCR90
3
graham.reeds

おそらく http://www.Microsoft.com/downloads/en/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&displaylang=en Visual Studio2008ランタイムライブラリにあります。はい!それをインストールした後、openofficeアップデートが機能します。

1
david nicol

プロジェクト設定の[構成プロパティ]-> [C/C++]-> [コード生成]に移動し、ランタイムライブラリをマルチスレッドDLLからマルチスレッドに変更してからコンパイルを試みますが、コンパイルされません。次に、それをマルチスレッドデバッグに変更してコンパイルを試みますが、再度実行されないので、マルチスレッドDLLに戻すと、コンパイルして実行する必要があります。

0
matt

完成したexeを他の人に渡す場合は、実行するために最新のVisualCランタイムをインストールする必要があります。これは、リリースビルドAFAIKでのみ機能します。 Visual Studioは、リリースとデバッグの両方に必要なランタイムをパスにインストールする必要があります。プロジェクトには、ランタイムの誤ったバージョンに対して誤って設定された追加の依存関係がある可能性があります。

このページ が役立つかどうかを確認してください。

0
Tim Matthews