0

そこで、ilgenerator を使用して動的メソッドを介して extern DLL からメソッドを呼び出そうとします。

delegate void Write(string text);
static void Main(string[] args)
{
    byte[] bytes = File.ReadAllBytes(@"externmethod.dll");
    var assembly = Assembly.Load(bytes);
    var method = assembly.GetTypes()[0].GetMethod("Write");
    var dynamicMethod = new DynamicMethod("Write", typeof(void), new Type[] { typeof(string) });
    var ilGenerator = dynamicMethod.GetILGenerator();
    ilGenerator.EmitCall(OpCodes.Call, method, null);
    var delegateVoid = dynamicMethod.CreateDelegate(typeof(Write)) as Write;
    delegateVoid("test");
    Console.ReadLine();
}

そしてDLLコード:

using System;
class program
{
    public static void Write(string text)
    {
        Console.WriteLine(text);
    }
}

しかし、私はこの奇妙なエラーが発生しています:

タイプ 'System.InvalidProgramException' の未処理の例外が test.exe で発生しました
追加情報: 共通言語ランタイムが無効なプログラムを検出しました。

そして、私は何が間違っているのかわからない??

4

1 に答える 1