0

「依存アセンブリmicrosoft.vc80.debugcrtが見つかりませんでした」というイベントエラーでデバッグビルドが爆発する理由を理解しようとしていました。

すべて(.cppまたは.h以外のもの)を削除してソリューションを再作成した後、まだ問題がありました。

Google 検索は役に立たず、VS を再インストールしても何の変化もありませんでした。

C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c に dll がありました。

\debug\.exe.intermediate.manifest ファイルを開くと、2 つの (dependentAssembly) エントリがありました: 1 つ目 :
name='Microsoft.VC80.DebugCRT' version='8.0.50608.0'
' バージョン ='8.0.50727.762'

1 つを削除して、もう 1 つを name='Microsoft.VC80.DebugCRT' version='8.0.50727.42' に変更すると、

開始するビルドを取得できます。

VS2008 をインストールしたことは確かですが、バージョンを制御しているのは何ですか? または、適切なデバッグ dll バージョンを「固定」する方法を教えてください。

VS2008 は、コントロール パネルからアンインストールされました。

編集: DebugCRT が検索された場合、レジストリに何も見つかりませんでした。
環境パスは VS8 フォルダを指しています。
c:\windows\winsxs\policies フォルダー
(8.0.50.727.42)には、DebugCRT フォルダーが 1 つしかありません
。 c:\windows\winsxs\manifests フォルダーには、.42 バージョンの .cat と .manifest しかありませ
ん(上記のマニフェスト フォルダー内) には version="8.0.50727.42" があります

明確化: マニフェスト ファイルには、.42 ではなく、それぞれ異なるバージョンの 2 つの "dependentAssembly" エントリがあります。1 つのエントリを削除し、もう一方のバージョンを .42 に一致するように変更して、デバッグ ビルドを開始することができます。

EDIT2:ブーストも使用しており、DLL内には.762バージョンがあります

4

3 に答える 3

1

このバージョンは、事前にコンパイルされたバージョンの Boost である Boost DLL から取得されました。ライブラリが再コンパイル (および再インストール) されると、ソリューションの再構築により、単一のバージョンとプログラムがリンクされて実行されたマニフェストが生成されました。

そのため、使用されているバージョンのソリューションにインポートされているライブラリと dll を確認してください。

于 2009-03-24T19:16:40.180 に答える
0

特定の環境で Boost を再構築することをお勧めします。また、CRT を静的にリンクすることで、Side by Side アセンブリを完全になくすこともできます...

于 2009-03-25T00:15:09.790 に答える
0

VS 2008 は VC80 ではなく VC90 であるため、これは問題の一部ではありません。manifest-requested assembly と SxS-loaded assenbly の関係は、C:\WINDOWS\WinSxS\Policies にあります。IIRC、「8.0.50608.0」は、VS2005 pre-SP1 によって生成されます。これは間違っており、8.0.50727.42 である必要がありますが、これはポリシーによってキャッチされます。

2 つのマニフェストを取得する方法がわかりません。マニフェストの設定は何ですか?

于 2009-03-24T12:18:59.590 に答える