0

我正在开发一个 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..

如果我单击 Break 按钮,则会显示调用堆栈:

[下面的帧可能不正确和/或丢失,没有为 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

我指定了与 DLL 位置相同的 (.pdb) 位置:

    C:\Edwards\Scada\Agent Service\

我还检查了路径以确保它是正确的,遗憾的是没有区别。

[编辑 2] 更多信息,该项目的 C# 部分正在 Visual Studio 2010 中开发。C++ 部分在 Visual Studio 2008 中。我无法控制这一点。

4

0 回答 0