问题标签 [luainterface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
282 浏览

.net - 在继续响应用户输入和渲染帧之前等待 x 秒

背景

我目前正在创建一个利用LuaInterface的 XNA 应用程序,以便我可以使用Lua 脚本控制该应用程序。


我想要的是

我注意到在我的开发过程中,很多事情可能都是“时间”。这样的事情可能包括显示信息,然后在 x 秒后将其删除,如果需要 x 秒,则以失败结束游戏,或者甚至用于每 x 秒使相机移动一定距离。我想wait在 Lua 中实现这个功能,而不是我的应用程序,但是在这一点上,我可以输入(因为我似乎无法让它工作)。


到目前为止我尝试过的

inv.lua

gELua.vb

(我的 XNA 游戏对象在哪里Game


那么为什么我的想法行不通呢?

当前的问题是,即使我Game.Tick()每次都调用以保持一切正常,但我的应用程序的 XNA 部分停止接收输入。


所以,我的问题是,有没有更好的方法来做到这一点?在遇到用户输入问题之前,我认为它运行良好。你们中的任何人都实施了这样的运作良好的东西吗?

0 投票
1 回答
399 浏览

c# - 为 LuaInterface 构建 Lua 模块

我有一个需要加载到 LuaInterface的 Lua 模块 ( lpack )。我已经为该项目尝试了几种不同的配置,但我似乎无法弄清楚链接。

我得到错误unresolved external symbol "void __stdcall lua_replace(struct lua_State *,int)" (?lua_replace@@YGXPAUlua_State@@H@Z) referenced in function "int __stdcall l_unpack(struct lua_State *)" (?l_unpack@@YGHPAUlua_State@@@Z)

如果我dumpbin /exports在 lua51.lib 文件上运行,我可以找到?lua_replace@@YAXPAUlua_State@@H@Z与我在 lua51.dll 中找到的 Dependency Walker 匹配的内容?lua_replace@@YAXPAUlua_State@@H@Z,因此该函数存在但名称不匹配。

我对这种级别的链接器管理不是很熟悉,所以这可能是我的一个简单错误。为什么 lpack 构建中的值与 lua51.lib 输入文件的值不匹配?

更新

lua51.dll 和 lua51.lib 文件中的所有导出都是__cdecl,我的 lpack 项目已设置为__stdcall. 更改该属性(在 C/C++ -> 高级 -> 调用约定下)修复了编译问题,我现在有了一个 lpack.dll 文件。

但是,当我尝试从 lua 加载文件时,require('lpack')它失败了The specified procedure could not be found.

中断使用 LoadLibraryA 加载库的 lua C 代码返回 NULL 和 0x7F 的 GetLastError() 代码。

更新 2

由于输出目录错误,我尝试加载的 lpack.dll 文件已过期,因此修复了 LoadLibrary 故障。接下来 GetProcAddress 会失败,但如果我extern "C"按照 Mud 的建议在 lpack.c 文件中添加导出功能,问题就解决了。

0 投票
1 回答
345 浏览

c# - Luainterface,如何从ac#代码传递整个类?

我想将整个类从 c# 代码传递给 lua,所以我可以在 LUA 中创建一个新对象并使用它的方法、字段等。完成后,我想知道是否可以在 lua 中使用对象,这些对象是在 ac# 代码中创建的,然后以某种方式传递给 lua。

这是我的代码:atm,它不可能在我的类 Person1 的 luainterface 对象中创建,然后当我将 say() 输入到 lua 脚本程序时使用它的函数(不在那里创建任何对象),我得到了 Person2.say( )

0 投票
2 回答
549 浏览

c# - Lua 没有这样的类型:loadassembly

我正在尝试使用 Lua 编写脚本:-

和 test.lua :-

但它不工作它抛出这个异常: -

test.lua , lua51.dll 和 LuaInterface.dll 在同一目录下,这里缺少什么?

0 投票
1 回答
1560 浏览

c# - 使用 LuaInterface 将 C# 类映射到 LUA 函数

有没有办法通过加载类将类直接映射到 C# 函数?而不是制作 100 多个RegisterFunctions并映射它们?

例:类似的东西

lua内部:

0 投票
2 回答
1985 浏览

c# - 如何为 Lua(forWindows)创建可加载的自定义 .NET dll?

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

DID 的工作如下:

如您所见,这里我正在加载标准程序集和类型,这并没有造成太大问题。但是,如果我在 .NET 4.0 下编译了自己的 dll 'LuaTest' 并尝试在 LUA 中加载它。那没起效。我写了类似的东西,

其中 'PlanetarySystem' 是 LuaTest 中的一个类。如果我运行这段代码,解释器会说:尝试调用全局“PlanetarySystem”(一个 nil 值)。

我还尝试了另一种加载 dll 的方法:

运行后,解释器抛出: lua: error loading module 'LuaTest' from file '.\LuaTest.dll': The specified procedure could not be found。

我是 .NET 框架和 LuaInterface 的新手。也许我做错了什么。请帮助我。非常感谢!

编辑:也许我应该在我的 dll 中有一个 Lua 的“入口点”,以表明这个 dll 是 LUA 可加载的???

编辑:Lua 不是 LUA。对讲葡萄牙语的人没有冒犯。我使用的 Lunanet 必须与 .NET 4.0 兼容,否则第一段代码将无法运行。

0 投票
1 回答
932 浏览

integration - C# 和 LuaInterface:如何在 Lua 中向 C# 对象添加表条目

我将 SharpLua 与 MonoDevelop 一起使用。我在 C# 端创建了一个类,它应该可以从 Lua 中使用。这很好,我可以从 Lua 访问所有字段。这很容易。

可以从 Lua 访问

现在,我想通过 Lua 创建新字段。在 Lua 中它应该看起来像

但这没有用。我在 ObjectTranslator 中遇到错误。所以我无法从 Lua 扩展表。我不想从 C# 访问这个新条目。应该只能创建它们。

还有其他方法可以实现这一目标吗?我可以从 LuaTable 创建一个类并将其插入 Lua 吗?

而不是在 Lua 中使用

但是,我是如何得到通知的,我想知道的东西在 LuaTable 中发生了变化(NewLuaTable.Name 发生了变化)?

谢谢您的帮助。

0 投票
3 回答
3868 浏览

c# - 通过 dll 将 C# 类映射到 Lua 函数

在我的“LuaTest”命名空间中,我有一个名为“Planet”的类。C# 代码如下所示:

然后我构建了 LuaTest.dll 并将这个文件复制到保存我的 Lua 脚本的同一个文件夹中。在 Lua 脚本中,我写道:

但是,这段代码不起作用。Lua 解释器抛出这个错误:

我怀疑我的 LuaTest 程序集根本没有加载。谁能指出我做错了什么?我将非常感激,因为我已经被这个问题困扰了好几天了。

另外,我的 LuaInterface.dll 是 .NET4.0 环境中的重建版本可能会有所帮助。

0 投票
2 回答
3715 浏览

c# - LuaInterface - RegisterFunction 对象参考

我正在尝试将 LuaInterface 集成到 C# 中,System.NullReferenceException当我尝试将 C# 函数绑定到 Lua 时,我得到了一个。我试图编译和运行的代码是:

当我运行这段代码时,我会System.NullReferenceException说它Additional information: Object reference not set to an instance of an object.RegisterFunction方法上崩溃了。

0 投票
1 回答
806 浏览

c# - 处理 LuaInterface 中的语法错误

我正在尝试使用LuaInterface将 Lua 脚本接口集成到我的 C# 项目中。

如果我执行语法正确的代码,它会按预期工作,但是一旦将语法错误(或看起来的任何其他错误)引入脚本,SEHException就会抛出没有关于错误的任何信息。

触发行为的简单示例:new LuaInterface.Lua().DoString("die");

当然,这完全抵消了 Lua 的错误处理机制,对我来说是一个阻碍。

显然这是一个自 2011 年以来开放的已知错误。

是否有任何解决方法,没有此错误的 LuaInterface 版本,或者是否有替代的 lua 包装器可以正确处理错误?