2

LuaInterfaceライブラリを使用して.netでluaを実行しましたが、正常に動作します。lua経由でCLRにアクセスできました。しかし、C#からLua関数を呼び出す方法は?

4

2 に答える 2

2

LuaFunctionCall()関数を使用できる、への参照を取得する必要があります。

サンプルコードは、このWebサイトにあります。

過去3年ほどで、LuaInterfaceの人気が少し低下し、サポートが低下したようです。

いずれにせよ、ここにいくつかのサンプルコードがあるChannel9ブログ投稿への新しいリンクがあります

于 2010-03-26T21:21:22.757 に答える
1

いくつかの写真は受け入れられた答えで壊れているので、私は新しい答えを追加することにしました。

このソリューションでは、最初にNLuaNuGetをプロジェクトにインストールする必要があります。たとえば、テーブルを取得するか、2つの変数を合計する必要があるとします。Test.luaファイルには次のものが含まれます。

-- Function sums up two variables
function SumUp(a, b)
    return a + b;
end

function GetTable()
    local table =
    {
        FirstName = "Howard",
        LastName = "Wolowitz",
        Degree = "just an Engineer :)",
        Age = 28
    };

    return table;
end;

C#コードは次のようになります。

static void Main(string[] args)
    {
        try
        {
            Lua lua = new Lua();
            lua.DoFile(@"D:\Samples\Test.lua");

            // SumUp(a, b)
            var result = lua.DoString("return SumUp(1, 2)");
            Console.WriteLine("1 + 2 = " + result.First().ToString());

            // GetTable()           
            var objects = lua.DoString("return GetTable()"); // Array of objects
            foreach (LuaTable table in objects)
                foreach (KeyValuePair<object, object> i in table)
                    Console.WriteLine($"{i.Key.ToString()}: {i.Value.ToString()}");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception: " + ex.ToString());
        }
        Console.WriteLine("Press any key...");
        Console.ReadKey();
    }
于 2018-05-29T10:10:17.070 に答える