CIL错误。找不到方法:'?'

时间:2012-01-16 20:41:06

标签: exception compiler-construction cil

我正在编写自己的编译器以获得它的乐趣xD。它正在使用Mono.Cecil编译到CIL,当我反编译或查看CIL它看起来没问题,但是,当我运行它时,我遇到崩溃(异常),声明“找不到方法:'?'”。 / p>

查看生成崩溃的方法(stacktrace显示哪个方法)这是给定方法的CIL:

.method public hidebysig virtual 
    instance class [Totem.Library]Totem.Library.TotemValue Execute () cil managed 
{
    IL_0000: callvirt class [Totem.Library]Totem.Library.TotemUndefined [Totem.Library]Totem.Library.TotemUndefined::get_Value()
    IL_0005: ret
}

Totem.Library是一个用C#编写的外部dll(不用我的编译器编译,因此应该工作)。被访问的属性(TotemUndefined.Value,静态属性)无法导致异常(它只返回在TotemUndefined的静态构造函数中创建的单例)。

我想知道,这个CIL有什么问题吗?或者是找到问题所需的更多信息(可以上传完整的源代码,截至目前只有几百行)。

1 个答案:

答案 0 :(得分:2)

您正在使用callvirt来调用静态函数。这不会奏效,只需使用call