2012-04-19 9 views
0

3つのアプリケーションがあります.1つは静的ライブラリを出力するネイティブC++アプリケーションです.1つはこの静的ライブラリのC++/CLRラッパーで、最後にC++/CLRラッパー。C++/CLR DLLを使用するとC#アプリケーションがクラッシュする

プロジェクトが空の場合、すべてコンパイルされて正常に動作しますが、ネイティブC++アプリケーションのクラスにコードを追加すると、C#winformsアプリケーションでクラッシュします。私はstenCLR.dllは、右のフォルダにあると確信しています

A first chance exception of type 'System.IO.FileNotFoundException' occurred in  
WindowsFormsApplication1.exe 
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in 
WindowsFormsApplication1.exe 

Additional information: Could not load file or assembly 'stenCLR.dll' or one of its 
dependencies. The specified module could not be found. 

:ここ

はエラーメッセージです。ここで

は、Visual Studioからの完全なエラーログです:

'WindowsFormsApplication1.exe': Loaded 'E:\ST Projects\sten_svn\trunk\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe', No native symbols in symbol file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\mscoree.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\msvcr110_clr0400.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\db19194dcf61188e0e1bb9b6b2dba362\mscorlib.ni.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll' 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Program Files (x86)\Common Files\microsoft shared\ink\tiptsf.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\version.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe' (Managed (v4.0.30319)): Loaded 'E:\ST Projects\sten_svn\trunk\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe', Symbols loaded. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\assembly\NativeImages_v4.0.30319_32\System\529187426262f016595cb4b92bc83241\System.ni.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Drawing\6007a55278ac4372ab91f08ead86756e\System.Drawing.ni.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Windows.Forms\1242e9bc90b42762b6c7f2a5052a2280\System.Windows.Forms.ni.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll' 
'WindowsFormsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll' 
'WindowsFormsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll' 
'WindowsFormsApplication1.exe': Loaded 'ImageAtBase0x50d00000', Loading disabled by Include/Exclude setting. 
'WindowsFormsApplication1.exe': Unloaded 'ImageAtBase0x50d00000' 
'WindowsFormsApplication1.exe': Loaded 'ImageAtBase0x519b0000', Loading disabled by Include/Exclude setting. 
'WindowsFormsApplication1.exe': Loaded 'ImageAtBase0x7f0000', Loading disabled by Include/Exclude setting. 
'WindowsFormsApplication1.exe': Unloaded 'ImageAtBase0x519b0000' 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\cryptsp.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\rsaenh.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\RpcRtRemote.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'E:\ST Projects\sten_svn\trunk\WindowsFormsApplication1\bin\Debug\stenCLR.dll', Symbols loaded. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\msvcr110d.dll', Symbols loaded. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\msvcp110d.dll', Symbols loaded. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\d3d11.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\dxgi.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file. 
'WindowsFormsApplication1.exe': Unloaded 'E:\ST Projects\sten_svn\trunk\WindowsFormsApplication1\bin\Debug\stenCLR.dll' 
'WindowsFormsApplication1.exe': Unloaded 'C:\Windows\SysWOW64\d3d11.dll' 
'WindowsFormsApplication1.exe': Unloaded 'C:\Windows\SysWOW64\dxgi.dll' 
'WindowsFormsApplication1.exe': Unloaded 'C:\Windows\SysWOW64\dwmapi.dll' 
'WindowsFormsApplication1.exe': Unloaded 'C:\Windows\SysWOW64\msvcp110d.dll' 
'WindowsFormsApplication1.exe': Unloaded 'C:\Windows\SysWOW64\msvcr110d.dll' 
First-chance exception at 0x753eb9bc in WindowsFormsApplication1.exe: Microsoft C++ exception: EEFileLoadException at memory location 0x003bcce4. 
First-chance exception at 0x753eb9bc in WindowsFormsApplication1.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000. 
First-chance exception at 0x753eb9bc in WindowsFormsApplication1.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000. 
First-chance exception at 0x753eb9bc in WindowsFormsApplication1.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000. 
First-chance exception at 0x753eb9bc in WindowsFormsApplication1.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000. 
First-chance exception at 0x753eb9bc in WindowsFormsApplication1.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000. 
A first chance exception of type 'System.IO.FileNotFoundException' occurred in WindowsFormsApplication1.exe 
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in WindowsFormsApplication1.exe 

Additional information: Could not load file or assembly 'stenCLR.dll' or one of its dependencies. The specified module could not be found. 

The program '[2000] WindowsFormsApplication1.exe: Native' has exited with code 0 (0x0). 
The program '[2000] WindowsFormsApplication1.exe: Managed (v4.0.30319)' has exited with code 0 (0x0). 

答えて

3

私はDependency WalkerFusion Log Viewer見てみることをお勧め。

ロードしようとしているDLLがない場合は、Dependency Walkerが教えてくれます。

Fusion Log Viewerは、DLLのロード先を正確に示します。

彼らは問題は非常に明らかにするように、これらは通常、ライブラリのロードの問題をデバッグする最も簡単な方法です:)

+0

依存関係ウォーカーでEXEを開くと、このメッセージが下部に表示されます。 警告:少なくとも1つの遅延ロード依存モジュールが見つかりませんでした。 警告:遅延ロード依存モジュールのエクスポート機能がないため、少なくとも1つのモジュールに未解決のインポートがあります。 リストビュー2のファイルは、 GPSVC.DLLとIESHIMS.DLLのように強調表示されています。 また、Fusion Log Viewerを実行しようとしましたが、bindin gの失敗は表示されません。 –

+0

@BarisUsakliちょうどそれらをGoogle。 IESHIMS.dllはIE(Program Files \ Internet Explorer)に関連し、GPSVC.DLLはグループポリシー(%SYSTEMROOT%\ WINDOWS \ System32 \)に関連しています。通常、これらはIE/Windowsにインストールされていますが、これが問題であるかどうかを確認して、DLLと一緒にコピーしてから再試行してみることができます。 –

+0

私はその間に問題を再現/修正することができますが、それは意味をなさないものです。私が置く場合: std :: unique_ptr _d3dObject;私は std :: shared_ptr _d3dObjectで置き換えると、C#アプリがクラッシュします。それはうまく動作します。 D3DObjectのヘッダーファイルがそのファイルに含まれています。 (facepalm) –

1

一つの可能​​性は、「いずれかのCPU」または64ビットのためのC#アプリケーションをコンパイルし、あなたは64ビットマシンを持っているということですC++ネイティブライブラリまたはC++/CLIは32ビットです。 この場合、システムは64ビットライブラリを探します。

すべてのアプリケーションが同じアーキテクチャ、x86またはx64用に構築されていることを確認してください。

+0

はい、すべてx86です。 –

関連する問題