2

私はVS2008でビルドしているC++プロジェクトを持っています。このプロジェクトは、VS2005を使用してビルドされたライブラリ(DLL + Import lib)とリンクし、VS2005デバッグCRTライブラリ(すべてがデバッグビルドです)をロードします。VS2005とVS2008のサイド・バイ・マニフェストの問題

VS2008でビルドされたこの実行可能ファイルを実行しようとすると、SP1でVS2005がインストールされているにもかかわらず、VS2005 DLLがデバッグCRTライブラリを見つけられないために読み込み中にエラーが発生します。私もWindowsのアップデートをチェックしたので、もっと何ができるのかは分かりません。

この問題を診断するにはどうすればよいですか?私はWindowsのイベントビューアを見て、それがデバッグVC80 CRTライブラリを見つけることができないことに気づいたが、それはすべて私が知っている。ここにはバージョンの不一致があります。このマニフェスト/サイドバイサイドのことはあまり知らないので、修正方法を知らないだけです。

私が構築しているOSはWindows XP 32ビットです。 VS2008 SP1とVS2005 SP1がインストールされているので(すべてのデバッグマニフェスト/ CRT DLLが利用可能)

+0

VS2k8ダイナミックライブラリを使用する実行可能ファイルAと、VS2k5ダイナミックライブラリを使用するDLL Bを正しく認識していますか?リブのミスマッチは飛行しない可能性が高い。 – user7116

+0

@sixlettervariables:それは正しいです。しかし、それは動作するはずです(Windows 7マシンでも動作します)。しかし、私は自分の環境をセットアップしようとしていて、Windows XPマシン(同じコード、同じDLLs)で動作させようとしています。以前はWindows XPでも動作するようになっていましたが、一貫した結果を得ることは困難です。 Windowsのアップデートのわずかな違いは、すべてが壊れてしまうようです。 –

+1

私は同様の設定で多くの問題を抱えています。オリジナルの必要なDLL(完全なCRTではなく)を含めるか、ソースから同じCRTで再構築するのが最善です。 – MPelletier

答えて

0

assembly manifestsを確認、作成、または確認する方法を学習します。 Windows XP上で

Here is more info once you get that done.

外部のマニフェストは、アプリケーションのローカルフォルダに存在する場合、オペレーティングシステムローダーではなく、バイナリ内に埋め込まれたマニフェストのこのマニフェストを使用しています。 Windows Server 2003以降のWindowsでは、逆のことが言えます。外部マニフェストは無視され、存在する場合は埋め込みマニフェストが使用されます。

関連する問題