VC++ および Windows のエキスパートの皆様、こんにちは。;)
まず、私のバックグラウンド: Vstudio、C & C++、Windows。あらゆる種類の可能性、フォーラム、修正、さらには O/S プラットフォームの変更を 5 日間試した後、ここに投稿する (またはウィンドウから飛び出す!) ことにしました。私の実際の開発作業を保持 !! . :)
Soo.. シナリオ: 問題が発生している開発マシン: OS: SP2 を適用した Windows Vista 64 ビット (ただし、VMWare を使用して実行している 32 ビット XP SP2 仮想マシンで同じ問題が発生しています。開発 IDE: SP1 を適用した Visual Studio 2008出力 Binary type: .DLL (開発用のプラグインになる運命です。IDE は RealStudio と呼ばれます)
問題/問題: VStudio 2008 を使用して 32 ビット C++ DLL を開発しています。これには、ASDCP (オーディオ/ビデオ コーデック処理に使用される) と呼ばれる中規模から大規模な C++ ライブラリが含まれます。 Win32、Linux、MacOS などでビルドするためのビルトイン サポート。
現在、ASDCP ライブラリは C++ 標準ライブラリ (MSVCP90.dll および .lib ファイルに格納されています) を利用しています。そのため、独自のプラグイン (DLL) を作成し、ASCP ライブラリを使用せずに呼び出し元アプリ (RealStudio、別の開発 IDE と呼ばれる) を許可すると (したがって、C++ 標準ライブラリがリンクされる必要はありません)、正常に動作します。 . しかし、ASDCP ライブラリからコードを追加し、C++ ランタイム ライブラリの STATIC Link(/MT) を選択してから、プラグインをロードして RealStudio を実行すると、メモリ リークが発生し、おそらく「アクセス違反」が発生します。おそらく、さまざまな DLL 間の不一致が原因です。
さて、この投稿に対する私の質問は、VStudio 2008 で CRT を動的にリンクしてから、RealStudio を実行してプラグインを読み込もうとすると、Microsoft.CRT の Side-by-Size ASSEMBLY CACHE を見つけることができないということです。 .VC90!! すべてのマニフェスト ファイルを操作し、マニフェスト ファイルを DLL に埋め込み、WinSxs アセンブリ キャッシュ内の CRT のバージョンを (約 10 回!) チェックし、マニフェスト ファイル/依存関係のニーズに対応しました。
しかしどういうわけか... RealStudio (RunAs Admiistrator) が CRT 9 DLL (特に MSVCP90.dll) をロードできません。私は MSDN や他のフォーラムで約 15 時間を費やして、同様の問題や解決策を検討し、Microsoft のフォーラム モデレーターが推奨する解決策を実装しました。しかし、役に立たない。
では、関連する CRT 依存関係の Assembl キャッシュを「参照」してロードするために、64-Windows (Vista SP2) で実行される 32 ビット C++ DLL をどのように取得しますか??????
ヘルプ!?!?!お願いします..
私が再び正気になるのを助けてくれて、前もって深く感謝します!
ディネシュ