2012-01-16 14 views
1

私はそれを楽しんで自分のコンパイラを書いていますxD。それはMono.Cecilを使ってCILにコンパイルしています。逆コンパイルやCILを見てもOKですが、実行すると「メソッドが見つかりませんでした:」というクラッシュ(例外)が発生します。クラッシュが(どの方法スタックトレースの番組)で生成される方法を見てみるとCILでエラーが発生しました。メソッドが見つかりません: '?'

これは、与えられたメソッドの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に何か問題がありますか?または、問題を見つけるために必要な情報が増えています(フルソースをアップロードできます。現在は合計で数百行に過ぎません)。

答えて

2

callvirtを使用して静的関数を呼び出しています。それは動作しません、単にcallを使用してください。

+0

ありがとうございました。 – Alxandr

関連する問題