如何创建可加载 Lua(适用于 Windows)的自定义 .NET dll?

2024-01-08

我们正在 .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兼容,否则第一段代码将无法工作。


我相信您将程序集名称与您尝试导入的类型的完全限定名称的必需部分混淆了。该错误表明 PlanetarySystem 类是“零值”,这意味着它可能无法通过该完全限定名称找到类。我可以确定您的类所在的名称空间。

其次,如果我的第一个建议不起作用,您可能需要将您的类设置为 ComVisible,以便 Lua 引擎可以看到您的类。

http://msdn.microsoft.com/en-us/library/ms182157.aspx http://msdn.microsoft.com/en-us/library/ms182157.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建可加载 Lua(适用于 Windows)的自定义 .NET dll? 的相关文章

随机推荐

  • C# 类型转换:存在显式强制转换但引发转换错误?

    我了解到HashSet实施IEnumerable界面 因此 可以隐式地强制转换HashSet对象进入IEnumerable HashSet
  • Flutter - 拖动标记并获得新位置

    在 Flutter 中 我有一张地图 可以在以下帮助下获取设备位置location https pub dartlang org packages location 然后我使用这个位置在 Google 地图中显示标记谷歌地图颤振 https
  • 在 JSON-LD 中,是否可以为属性值定义 URI 映射?

    假设我们有以下 JSON context name http schema org name status http schema org status name Manu Sporny status trollin The trollin
  • 有没有 Runtime.getRuntime().exec() 的替代方法

    只是想知道 是否有比这更好 更新 更安全 更快等的东西Runtime getRuntime exec 我想在 Linux 上从我的应用程序运行另一个进程 这是我知道的唯一方法 如果有替代方案就好了 怎么样流程构建器 http downloa
  • Sublime Text 3 中的自定义语法

    我正在努力找出如何使用新的 Sublime Text 3 创建新的语法突出显示 sublime 语法风格定义 之前的大多数答案都与旧的做法有关 从 Sublime Text Build 3084 开始 添加了新的语法定义格式 扩展名为 su
  • ASP.NET 主题未正确呈现

    我有一个使用主题的小型网络应用程序 主题在主机上工作 因此在预初始化时 如果主机 a 则加载 x 主题 如果主机 b 则加载 y 主题 在我的代码中 这看起来像 如果 request url host contains a 那么 页面 主题
  • ios 8.4.1 webview黑屏

    我需要在 ios 中在一个简单的 webview 中创建一个应用程序 我用example https github com vandadnp iOS 8 Swift Programming Cookbook blob master chap
  • 在日志传送的辅助服务器上创建用户

    我有一个生产服务器说ServerA我已设置日志传送到ServerB其处于只读模式 此日志传送的目的是降低生产服务器上某些昂贵的查询 痛苦的报告 的负载 现在 如果我必须使用我们的域帐户创建一些登录名 我无法执行此操作 因为辅助数据库位于st
  • 如何从 Rust 中的 Vec 中提取两个可变元素[重复]

    这个问题在这里已经有答案了 我试图从 Vec 中提取两个元素 它始终包含至少两个元素 这两个元素需要可变地提取 因为我需要能够在单个操作中更改这两个元素的值 示例代码 struct Piece x u32 y u32 name static
  • 使用 CSS 将按钮放置在另一个按钮之上

    我在这里需要一些高级 CSS 帮助 我有一个登录按钮和一个注册按钮 我只想一次显示一个 如果用户未登录 注册按钮应出现在登录按钮的顶部 我们有一个复杂而疯狂的后端 如果服务器认为用户未登录 它将生成注册按钮的代码 但是两者都会由服务器输出
  • Windows Python:使用区域设置模块更改编码

    使用Python 2 7 我正在编写一个抽象的网络抓取工具 在显示 打印 某些字符时遇到问题 我收到回溯错误 UnicodeEncodeError ascii codec can t encode character u u2606 in
  • 什么是无符号字符?

    在 C C 中 什么是unsigned char是用来 和普通的有什么不同char 在C 中 有以下三种distinct字符类型 char signed char unsigned char 1 char 如果您使用字符类型text 使用不
  • 如何从组件模板将数组作为 Input() 传递?

    我需要使用绑定将值数组传递给组件 例如 Component selector my component template div div export class MyComponent Input data any 然而 Angular
  • Prolog 中的算术,使用 2 的幂表示数字

    我有两个数字 让我们命名它们N and K 我想写N using K2 的幂 例如如果N 9 and K 4 then N可能N 1 2 2 4 2 0 2 1 2 1 2 2 我的程序应该输出类似的内容N 1 2 2 4 我习惯了C 我在
  • WPF 应用程序的单元测试失败,并出现 NotSupportedException“无法识别 Uri 前缀”

    我目前正在编写单元测试 在这个位置测试失败 并出现 NotSupportedException 无法识别 URI 前缀 经过小型研究 我已经注册了 pack Uri 方案 但它没有帮助 return WaitImageThumbnail W
  • 如何将工作负载项与已提交的更改链接起来?

    我正在使用 Git for Visual Studio Online 我添加了一个产品待办事项列表项 我添加了一些文件并提交更改 由于某种原因没有链接 我对该项目做了更多的提交并同步 我的第一个更改未与待办日志项链接 它仍然在任务下显示为待
  • 如何获取 grep 命令的输出(Python)

    我有一个输入文件 test txt 为 host dc2000 host 192 168 178 2 我想通过使用以下方式获取这些机器的所有地址 grep host root test txt 依此类推 我通过python获得命令输出 im
  • 从字符串Python中获取列表[重复]

    这个问题在这里已经有答案了 例如 我有一个字符串 1 2 3 我怎样才能让她翻一张清单 1 2 3 引号字符串 如果有其他字符 则保留字符串 我怎样才能做到这一点 例子 input output 1 2 3 1 2 3 input outp
  • 使用 DbSet 和 IQueryable 以及 NSubstitute 操作对象会返回错误

    我想用N替补 http nsubstitute github io 通过模拟对 Entity Framework 6 x 进行单元测试DbSet http msdn microsoft com en us library gg696460
  • 如何创建可加载 Lua(适用于 Windows)的自定义 .NET dll?

    我们正在 NET 框架中做一个项目 并希望稍后可以将其大部分功能用于 Lua 脚本 我想我可以在 LuaInterface 的帮助下编译一个 dll 并将其加载到 Lua 脚本中 但不知怎的 它不起作用 所做的工作如下 require lu