VS2005 で作成された C++/CLI プロジェクトがあります。私はこれを VS2010 (または 2012) で実行したいと思っています。これは私のメイン IDEであり、C++/CLI プロジェクトでもいくつか変更する必要があり、vs2005 に行ったり来たりして再コンパイルし、コピーする必要があるのはイライラします。など。もう 1 つの重要な理由は、VS2010/2012 で実行されている私のプロジェクトが .NET4 にあるため、すべてを VS2005 に移行するオプションがないことです。
プロジェクトには、C++ 再頒布可能ライブラリ (msvcr80.dll、msvcm80.dll、msvcp80.dll) のデバッグ バージョンに依存するアンマネージド サード パーティ ライブラリへの依存関係があります。
アップグレードされたプロジェクトを最初に実行したとき、「指定されたモジュールが見つかりませんでした」というメッセージが表示されました -
その後、cli プロジェクトが msvc の新しいバージョン (msvcr90.dll) に対してコンパイルされていることに気付きました。
依存する cli アセンブリの依存関係。左が vs2005、右が 2008
2005 ライブラリを使用して VS の新しいバージョンをコンパイルする方法はありますか?
どちらに対してコンパイルするかを更新することは重要ではありません(とにかく不可能かもしれません)が、両方を並べて実行およびデバッグすることは可能ですか?コンパイルされたプロジェクトを実行しようとすると、次のエラー メッセージが表示されます。
マニフェスト ファイルを vs2005 プロジェクトから vs2010 プロジェクトにコピーしようとしましたが、うまくいきません (同じエラー メッセージ)。また、埋め込みマニフェストを無効にし、生成された .manifest ファイルを vs2005 のものに置き換えましたが、これも機能しません。
マニフェストでmsvcrライブラリを指定することで、このエラーを回避できました。
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
ただし、アプリケーションを実行するAccessViolationException - Attempted to read or write protected memory
と、メソッドの1つを使用しようとすると、サードパーティのライブラリの1つがスローされます。それ以外の場合、このコードは vs2005 で正常に動作します。