以下是一个简单的示例,演示如何在Lua中调用.NET Framework的DLL。请注意,这个示例假设你已经安装了Lua和.NET Framework,并且有一个名为"MyDll.dll"的.NET DLL。
首先,创建一个名为"MyDll.cs"的C#文件,用于定义一个简单的类和公开的方法。
C#代码
using System;
public class MyClass
{
public static void MyMethod(string message)
{
Console.WriteLine(message);
}
}
?
然后,将该文件编译为DLL。在Visual Studio中,创建一个新的Class Library项目,将"MyDll.cs"添加到项目中,并构建项目。这将生成一个名为"MyDll.dll"的DLL文件。
接下来,创建一个名为"LuaInterop.cs"的C#文件,用于实现Lua与.NET DLL之间的桥接。
C#代码
using System;
using System.Runtime.InteropServices;
using LuaInterface;
using Microsoft.Scripting.Hosting;
public class LuaInterop
{
[DllImport("MyDll")]
private static extern void MyClass_MyMethod(string message);
public static void CallMyMethod(string message)
{
MyClass_MyMethod(message);
}
}
?
在上面的代码中,我们使用DllImport
属性来声明MyClass_MyMethod
方法为外部方法,并指定其对应的DLL和函数名称。这将使C#能够调用该方法。
现在,将这两个DLL文件(MyDll.dll和LuaInterop.dll)放置在Lua脚本可以访问的目录中。然后,编写一个Lua脚本来调用.NET DLL中的方法。
lua代码
-- 加载LuaInterop库
local luaInterop = require("LuaInterop")
-- 调用MyMethod方法并传递参数
luaInterop.CallMyMethod("Hello from Lua!")
?
最后,运行Lua脚本。在Lua中,使用require
函数加载"LuaInterop"库,并调用CallMyMethod
方法来调用.NET DLL中的方法。在这个例子中,我们传递了一个字符串参数"Hello from Lua!"给MyMethod
方法,它将输出该字符串到控制台。