如何创建可供Lua(适用于Windows)加载的自定义.NET dll?
2012-11-16 11:3:52
收藏:0
阅读:161
评论:2
我们正在.NET框架中进行一个项目,并希望以后可以使它的大多数功能对Lua脚本可用。我认为我可以编译一个dll,并通过LuaInterface帮助将其加载到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兼容,否则第一段代码将不起作用。
点赞
用户4767671
如果你的电脑装好了 Lua 和 C#2010,则将 C# 代码复制到 DLL 项目中并构建它。然后确保你的 DLL 位于 Lua 环境的注册目录中并执行在同一帖子中显示的 Lua 脚本便可。对你的额外提示:我需要使用 .NET 3.5 框架。使用 .NET 4.0,LuaInterface 对我而言不起作用。
2015-05-08 13:53:09
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我认为您将程序集名称与导入的类型的完全限定名称的必要部分混淆了。错误表明,PlanetarySystem类是“nil值”,这意味着它很可能找不到该完全限定名称的类。我建议您确定您的类所在的命名空间。
其次,如果我的第一条建议不起作用,您可能需要将您的类设为ComVisible,以便Lua引擎可以看到您的类。
http://msdn.microsoft.com/en-us/library/ms182157.aspx