2012-04-19 148 views
0

当我有3个应用程序的一个是一个本地C++应用程序,它输出一个静态库中,一个是用于该静态库中的C++/CLR包装和最后一个C#窗口形成应用程序,使用C++的/ CLR包装。C#应用崩溃使用C++/CLR DLL

当项目是空的一切编译和运行正常,但当我在本地C++应用程序添加一些代码我的课,我得到的C#WinForms应用程序崩溃。

以下是错误消息:

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. 

我相信stenCLR.dll是正确的文件夹。

下面是从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

的Dependency Walker会告诉你,如果有任何DLL的,你要加载的一个缺失。

融合日志查看器会告诉你究竟DLL试图从哪里加载。

这些通常是调试库加载的问题,因为他们使这一问题变得极其明显:)

+0

当我在dependency walker中打开exe文件时,我在底部看到此消息: 警告:至少找不到一个延迟加载依赖项模块。 警告:由于延迟加载相关模块中缺少导出功能,因此至少有一个模块具有未解析的导入。 在列表视图中,2个文件被突出显示: GPSVC.DLL和IESHIMS.DLL,我甚至不知道它们是什么。 也尝试运行Fusion Log Viewer,但它不显示任何绑定失败。 – 2012-04-19 03:42:55

+0

@BarisUsakli只需谷歌他们。 IESHIMS.dll与IE(Program Files \ Internet Explorer)相关,GPSVC.DLL与组策略(%SYSTEMROOT%\ WINDOWS \ System32 \)相关。通常这些安装在IE/Windows中,但是您可以通过查找它们并将它们与DLL一起复制并再次尝试来查看是否是您的问题。 – 2012-04-19 03:50:45

+0

我会尽力,同时我能够重现/解决问题,但它没有任何意义。如果我把: std :: unique_ptr _d3dObject;如果我将其替换为 std :: shared_ptr _d3dObject,则c#应用程序崩溃;它运行良好。 D3DObject的头文件包含在该文件中。 (facepalm) – 2012-04-19 03:54:47

1

一种可能性是,你有一个64位的机器,编为“任何CPU”位或64位的C#应用​​程序的最简单方法而C++本地库或C++/CLI是32位。 在这种情况下,系统会查找64位库。

确保所有应用程序都是为相同架构x86或x64构建的。

+0

是的,他们都是x86。 – 2012-04-19 13:45:00