同様の SO questionで提案されたソリューションに従って、かなり複雑な dll ファイルを C++ CLI アプリ (または実際には C#) にロードしたいと考えています。ターゲット アーキテクチャは一貫して 64 ビットに設定されます。
このアプリで使用される .dll は別のプロジェクトで生成され、ネイティブ C++ ライブラリ (Ogre、Boost など) を使用して C++ CLI で記述され、独自の dll に依存します (すべて 64 ビット用にコンパイルされています)。プラットフォーム)。これらの依存関係 dll は、それらを使用する厄介な .dll と共に、アプリケーションの出力フォルダーにコピーされます。
ただし、この行に到達すると:
Assembly^ SampleAssembly;
SampleAssembly = Assembly::LoadFrom( "E:\\x64\\Debug\\OgreWrapper.dll" );
出力コンソールには次のように表示されます。
'DumbTestCLR.exe': Loaded 'E:\x64\Debug\OgreWrapper.dll', Symbols loaded.
'DumbTestCLR.exe': Unloaded 'E:\x64\Debug\OgreWrapper.dll'
いくつかの致命的なキャッチされない例外がスローされます。
First-chance exception at 0x000007fefe32cacd (KernelBase.dll) in DumbTestCLR.exe: Microsoft C++ exception: EEFileLoadException * __ptr64 at memory location 0x0016d588..
First-chance exception at 0x77cace3b (ntdll.dll) in DumbTestCLR.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.
First-chance exception at 0x77cace3b (ntdll.dll) in DumbTestCLR.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.
First-chance exception at 0x77cace3b (ntdll.dll) in DumbTestCLR.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.
ここに記載されている提案はどれも当てはまらないため (つまり、アプリと dll の間のビット数の競合が原因ではない)、問題の原因は何でしょうか? dll が他の (ネイティブ) dll を読み込めないためにクラッシュしたと思われますが、問題の原因となっている dll を確認するにはどうすればよいでしょうか?
長い質問と、おそらくばかげた質問で申し訳ありません..