2009-03-24 18 views
0

デバッグビルドが "依存アセンブリmicrosoft.vc80.debugcrtが見つかりませんでした"というイベントエラーでなぜ爆発したのかを解明しようとしていました。Visual Studio 2005 - C++ - マニフェストの作成を制御するもの

すべてのもの(.cppまたは.h以外のもの)を削除し、解決策を作成した後も、私はまだ問題がありました。

Google検索では無駄でしたが、VSを再インストールしても変更はありませんでした。

私はC:\ WINDOWS \ WinSxS \ x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16cにdllを持っていました。

は、私は\デバッグ\ .exe.intermediate.manifestファイルを開いて、それが2(dependentAssembly)エントリーました:
第一:名= 'Microsoft.VC80.DebugCRT' バージョンを= '8.0.50608.0'
第二:名前= 'Microsoft.VC80.DebugCRT' バージョン= '8.0.50727.762'

私は1つを削除して、 名= 'Microsoft.VC80.DebugCRT' バージョン= '8.0.50727.42'

に他のものを変更した場合

ビルドを開始できます。

私はVS2008をインストールしましたが、バージョンを制御していますか?またはどのように私は "スティック"に適切なデバッグのDLLのバージョンを得ることができます。

コントロールパネルからVS2008を削除しました。

EDIT:DebugCRTが検索された場合、レジストリには何も見つかりません。
環境パスはVS8フォルダを指します。
のみ1 DebugCRTフォルダはCであり:\ WINDOWS \ winsxs \ポリシーフォルダ
(8.0.50.727.42)
C:\ WINDOWS \ winsxsは\フォルダを明示するのみの.catの0.42バージョンを持っており、マニフェスト
(上記マニフェストフォルダ内)マニフェストファイルは、バージョン=「8.0.50727.42」

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

EDIT2:私はまた、ブーストを使用していますし、それが問題の一部ではありませんので、DLLを内側に、0.762バージョン

答えて

1

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

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

0

VS 2008はVC90ないVC80でもあります。マニフェストで要求されたアセンブリとSxSでロードされたアセンブリの関係は、C:\ WINDOWS \ WinSxS \ Policiesにあります。 IIRC、 "8.0.50608.0"はSP1以前のVS2005によって生成されます。それは間違っており、8.0.50727.42であったはずですが、これはポリシーによって捕捉されます。

どのように2つのマニフェストを取得しているのか分かりません。あなたのマニフェスト設定は何ですか?

0

あなたの特定の環境でBoostを再構築することをお勧めします。また、CRTを静的にリンクすることで、サイドバイサイドアセンブリをすべて廃止することができます。

+0

ええ - 私はそれをやったことがありますが、MFCはリンクしたくないです。私は、MFCのプリンタクラスを置き換え、完全にMFCをダンプしようとしています。 – jim

関連する問題