我们正在 .NET 框架中做一个项目,并希望稍后可以将其大部分功能用于 Lua 脚本。我想我可以在 LuaInterface 的帮助下编译一个 dll 并将其加载到 Lua 脚本中。但不知怎的,它不起作用。
所做的工作如下:
require 'luanet'
luanet.load_assembly("System.Windows.Forms")
Form = luanet.import_type("System.Windows.Forms.Form")
Button = luanet.import_type("System.Windows.Forms.Button")
form1 = Form()
button1 = Button()
正如您所看到的,我在这里加载标准程序集和类型,这并没有造成太大问题。
但是,如果我有自己的 dll 'LuaTest' 在 .NET 4.0 下编译并尝试在 LUA 中加载它。它不起作用。我写了类似的东西,
require 'luanet'
luanet.load_assembly("LuaTest")
PlanetarySystem = luanet.import_type("LuaTest.PlanetarySystem")
solarSystem = PlanetarySystem()
其中“PlanetarySystem”是 LuaTest 中的一个类。如果我运行这段代码,解释器会说:尝试调用全局“PlanetarySystem”(零值)。
我还尝试了另一种加载dll的方法:
package.path = package.path .. ";" .. "/?.dll"
require 'luanet'
require 'LuaTest'
运行后,解释器抛出: lua: 从文件“.\LuaTest.dll”加载模块“LuaTest”时出错:找不到指定的过程。
我是 .NET 框架和 LuaInterface 的新手。也许我做错了什么。请帮我解决这个问题。非常感谢!
编辑:也许我应该在我的 dll 中有一个 Lua 的“入口点”,以表明该 dll 是 LUA 可加载的???
编辑:Lua 不是 LUA。无意冒犯葡萄牙语人士。我使用的Lunanet必须与.NET 4.0兼容,否则第一段代码将无法工作。