首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CIL中出现错误。找不到方法:“?”

CIL中出现错误。找不到方法:“?”
EN

Stack Overflow用户
提问于 2012-01-17 04:41:06
回答 1查看 129关注 0票数 1

我正在编写自己的编译器,以此为乐趣的xD。它正在使用Mono.Cecil编译成CIL,当我反编译它或查看CIL时,它看起来没有问题,然而,当我运行它时,我得到了一个崩溃(异常),声明“方法未找到:'?'”。

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

代码语言:javascript
复制
.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有什么问题吗?或者需要更多信息来查找问题(可以上传完整的源代码,到目前为止总共只有几百行)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-17 04:43:28

您正在使用callvirt调用静态函数。这不会起作用,只需使用call即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8885984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档