我有一个针对.Net框架4.5版的WPF C#应用程序。我的应用程序调用一个未受管理的DLL,除了一个方法之外的所有方法都正常工作。当我调用问题方法时,我的进程退出而不引发任何异常,退出代码为:1073741855 (0x4000001f)
我已经阅读了<legacyCorruptedStateExceptionsPolicy>
元素并将其添加到我的app.config文件中。我在“异常设置”对话框中打开了所有异常(我正在使用VS2015,BTW)。在这一点上,我已经没有技术来确定导致进程退出的原因。
更新:我碰巧在项目设置中尝试启用启用本机代码调试,现在收到以下异常:
在0x77CBED0B(ntdll.dll)中抛出异常 SK.UnmanagedDLLExceptionTest.exe:0xC0000374:堆已经存在 损坏(参数:0x77CF4270)。
鉴于上述信息,您是否知道其他任何可用于将更多细节带到表面的技术?
如果您感兴趣(并且愿意),我已经创建了一个显示问题的简单的控制台应用程序download here。
答案 0 :(得分:2)
通过启用项目设置中的“启用本机代码调试”,我可以抛出以下异常:
在0x77CBED0B(ntdll.dll)中抛出异常 SK.UnmanagedDLLExceptionTest.exe:0xC0000374:堆已经存在 损坏(参数:0x77CF4270)
虽然这当然不是好消息,但它会提供更多细节并引导我走向行为不端的方向。
答案 1 :(得分:1)
如果您实际上没有抓到任何东西,那么抓住遗产标志并不会有帮助。
错误似乎解码为找不到DLL。
这是一个32位的DLL,你编译为任何CPU。如果你有x64(你可能会这样做),这就是问题所在。具体编译为x86。
如果你把catch放在那里,它仍然没有帮助,因为在方法入口(在尝试到达之前)编译了绑定。