调用非托管 dll 会在不引发异常的情况下终止进程

Call to unmanaged dll kills process without raising exception

我有一个面向 .Net 框架 4.5 版的 WPF C# 应用程序。我的应用程序正在调用非托管 DLL,但只有一种方法运行良好。当我调用问题方法时,我的进程退出而没有引发任何异常,退出代码为:1073741855 (0x4000001f)

我已了解 <legacyCorruptedStateExceptionsPolicy> 元素并将其添加到我的 app.config 文件中。我在异常设置对话框中打开了所有异常(我正在使用 VS2015,顺便说一句)。在这一点上,我 运行 无法确定导致进程退出的原因。

更新:我碰巧尝试在项目设置中打开启用本机代码调试,现在收到以下异常:

Exception thrown at 0x77CBED0B (ntdll.dll) in SK.UnmanagedDLLExceptionTest.exe: 0xC0000374: A heap has been corrupted (parameters: 0x77CF4270).

鉴于上述信息,你们是否知道任何其他可用于将更多细节呈现在表面的技术?

如果您有兴趣(并且愿意),我已经创建了一个非常简单的控制台应用程序来展示问题,download here

如果您实际上没有捕获到任何东西,则捕获遗留标志将无济于事。

错误似乎解码为未找到 DLL。

这是一个 32 位 DLL,您编译为任何 CPU。如果你有 x64(你可能有),这就是问题所在。专门编译为 x86.

如果你把 catch 放在那里,它仍然无济于事,因为绑定是在方法入口处编译的(在到达 try 之前)。

通过在项目设置中打开 "Enable native code debugging",我能够抛出以下异常:

Exception thrown at 0x77CBED0B (ntdll.dll) in SK.UnmanagedDLLExceptionTest.exe: 0xC0000374: A heap has been corrupted (parameters: 0x77CF4270)

虽然这肯定不是好消息,但它确实提供了更多详细信息并引导我朝着行为不当的 dll 的方向发展。