繁体   English   中英

如何使用Mono.Cecil为外部方法提供方法主体

[英]How to provide method body for extern method with Mono.Cecil

我正在使用MS C#编译器来编译这样的方法:

[Placeholder] public extern void Method();

编译后的方法的RVA = 0 (相对虚拟地址)。

然后,使用Mono.Cecil 0.9.3,我要为其填充一个方法主体。

我这样做是这样的:

methodDefinition.Body = new MethodBody(methodDefinition);
// emit code...

但是,当尝试保存程序集时,出现错误:

 System.NullReferenceException: Object reference not set to an instance of an object.
    at Mono.Cecil.Cil.CodeReader.IsInSection(Int32 rva)
    at Mono.Cecil.Cil.CodeReader.MoveTo(Int32 rva)
    at Mono.Cecil.Cil.CodeReader.PatchRawMethodBody(MethodDefinition method, CodeWriter writer, MethodSymbols& symbols)
    at Mono.Cecil.Cil.CodeWriter.WriteUnresolvedMethodBody(MethodDefinition method)
    at Mono.Cecil.Cil.CodeWriter.WriteMethodBody(MethodDefinition method)

我该如何运作?

我很say愧地说解决方案是将Mono.Cecil升级到0.9.5版。

暂无
暂无

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

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