簡體   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