【发布时间】:2012-09-25 10:38:04
【问题描述】:
下面的 C# 代码在 .NET4.0 上会崩溃,但在 .NET2.0 上可以正常工作,这真的很有趣。
C# 代码
class Program
{
static void Main(string[] args)
{
try
{
ExceptionTest();
Console.WriteLine("Done!");
}
catch (Exception e)
{
Console.WriteLine("Error !!!");
Console.WriteLine(e.Message);
}
}
[DllImport("badapp")]
private static extern int ExceptionTest();
}
C++ 代码
extern "C" __declspec(dllexport) int ExceptionTest()
{
IUnknown* pUnk = NULL;
pUnk->AddRef();
return 0;
}
如果针对 .NET2.0 编译上述 C# 代码,一切正常。只有针对 .NET4.0 进行编译才会使其在运行时崩溃。
我怀疑自 .NET4.0 以来系统异常捕获机制已更改。有什么想法吗?
【问题讨论】:
标签: c# c++ access-violation