繁体   English   中英

C#托管代码中的“AccessViolationException未处理”错误

[英]“AccessViolationException was unhandled” error in C# Managed Code

我有新问题。 我的代码:

.method public static void  Main() cil managed
{
  .entrypoint
  // Code size       3 (0x3)
  .maxstack  1
  IL_0000:  ldnull
  IL_0001:  stloc.0
  IL_0002:  ret
} // end of method Program::Main

C#代码:

il.Emit(OpCodes.Ldnull);
il.Emit(OpCodes.Stloc_0);
il.Emit(OpCodes.Ret);

我通过System.Reflection和System.Reflection.Emit类生成此代码。 有谁知道为什么这不起作用? 请帮忙。

我的错误

一个小问题 - 我应该生成构造函数吗?

您正尝试在本地0( stloc.0 )中存储null,但实际上并未定义任何本地。

您需要使用DeclareLocal方法来定义本地,然后您可以将其传递给接受LocalBuilder的Emit重载(例如,您可以使用它来发出stloc操作码,然后是LocalBuilder); 或者你可以继续使用stloc.0因为你知道只有一个本地。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM