【问题标题】:PowerShell and LuaInterface.dllPowerShell 和 LuaInterface.dll
【发布时间】:2020-07-17 22:35:09
【问题描述】:

LuaInterface

Here是c#上的一个例子

我是新手。如何正确调用这个 dll? 我正在尝试这个:

[System.Reflection.Assembly]::LoadFile("E:\\lua\\LuaInterface.dll") 

$Lua = new-object LuaInterface.Lua # Here IntelliSense see class lua after dot
$lua.DoString("local a=5")         # Here IntelliSense see all methods after dot

还有这个:

Add-Type -path "E:\lua\LuaInterface.dll"

[LuaInterface.Lua]::DoString("local a=5")

但没有成功。请给我看 LuaInterface 中“3+2”的例子。

Lua 的方法 PS 不知何故看不到。 在screenshot powershell 可以看到来自 luaDLL 类的方法。但是总是需要多一个参数luastate

【问题讨论】:

  • “不成功”——这是什么意思?来自 Lua 的意外结果?抛出错误?如果是这样,哪些错误?
  • 首先来自 Lua PS 类的方法不知何故看不到。来自 luaDLL 的方法需要 luastate 作为第一个参数,但我不明白我应该把它放在哪里。

标签: c# .net powershell lua


【解决方案1】:

您真的很亲密,但:: 仅供静态成员 访问。

我在 32 位控制台 (PowerShell 5.1) 中进行了以下工作:

# Load LuaInterface
Add-Type -Path path\to\luainterface.dll

# Create Lua instance
$lua = [LuaInterface.Lua]::new()

# Set global variable values
$lua['a'] = 2
$lua['b'] = 3

# return result of `a+b`
$lua.DoString("return a+b")

【讨论】:

  • Mathias R. Jessen,谢谢!请告诉我,我如何从 LuaDLL 类运行 lua_dostring($luaState,"os.execute('notepad.exe')") ?为什么它只能在 32 位控制台上运行?
猜你喜欢
  • 2012-02-25
  • 2021-05-31
  • 2015-06-11
  • 1970-01-01
  • 2013-12-24
  • 2011-10-05
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多