我正在处理一个C ++ DLL,它是一个更大的项目的一部分,该应用程序是用C#编写的。
最近我收到了显示的Microsoft Visual Studio错误。我已经使用Visual Studio调试了该项目,我已经附加了该过程。我在DllMain中有一个断点,但是它在到达那里之前崩溃了,显示了一个对话框,其中包含:
First-change exception at 0x74372ea2 in ........Service.exe:
Microsoft C++ exception EEFileLoadException at memory location 0x039bc4d4..
如果我单击“中断”按钮,则会显示呼叫堆栈:
[以下框架可能不正确和/或丢失,没有为KernelBase.dll加载任何符号]
KernelBase.dll!74372ea2()
clr.dll!50bc454d()
clr.dll!50afc3ee()
clr.dll!50afc41d()
clr.dll!50afc440()
clr.dll!50b415a4()
clr.dll!50b1a8dc()
clr.dll!50b1a476()
clr.dll!50b1e0c4()
clr.dll!50b161b0()
clr.dll!50b238aa()
clr.dll!50b1f739()
clr.dll!50b1f739()
clr.dll!50b1c090()
clr.dll!50b22caf()
clrjit.dll!68971939()
clrjit.dll!689922a5()
clrjit.dll!68989fed()
clrjit.dll!689749d5()
clr.dll!50b1fecf()
clr.dll!50b1ffac()
clr.dll!50b1fff1()
clr.dll!50b2024f()
kernel32.dll!76933a61()
kernel32.dll!76933a61()
clr.dll!50adf405()
clr.dll!50adf35f()
clr.dll!50b209bf()
clr.dll!50b21780()
clr.dll!50adef11()
mscorlib.ni.dll!78fda29d()
mscorlib.ni.dll!790214a2()
mscorlib.ni.dll!790213d6()
mscorlib.ni.dll!79021391()
mscorlib.ni.dll!78fda1f8()
clr.dll!50adea56()
clr.dll!50af93ef()
clr.dll!50af9673()
clr.dll!50c3ecfd()
clr.dll!50afb213()
clr.dll!50afb27d()
clr.dll!50ae1c81()
clr.dll!50adf405()
clr.dll!50ae1c81()
clr.dll!50ae1e80()
clr.dll!50bd4917()
kernel32.dll!769395e4()
ntdll.dll!774d241a()
ntdll.dll!774d23e9()
我该怎么做才能找出问题所在?
[编辑]根据建议,我执行了以下操作:
Tools / Options / Debugging / Symbols
我指定了(.pdb)位置,该位置与DLL位置相同:
C:\Edwards\Scada\Agent Service\
我还检查了路径以确保它是正确的,可惜没有任何区别。
[编辑2]还有更多信息,该项目的C#部分在Visual Studio 2010中开发。C++部分在Visual Studio 2008中。对此我无能为力。