3

我有一些包含我的业务逻辑的 Lua 代码,我想使用 NLua 在 .NET 中运行。

我的一些 lua 文件目前使用“require”关键字来引用其他文件中的函数。现在,如果我使用例如 ZeroBrane Studio 运行代码,这可以正常工作。但是,一旦我使用“DoFile”将代码加载到 NLua 中,就会出现一些“未找到模块”错误。

我的问题是;在 NLua 中运行代码时,我可以使用“require”的概念吗?如果不是,那么在对文件运行 DoFile 之前,我是否需要删除这些行(当然要确保以正确的顺序运行文件)?

更新:我想也许我只需要将我的 Lua 文件夹添加到 package.path。我通过执行DoString("package.path = '<my_path>' .. package.path");“这是“最佳实践”来解决它吗?

4

1 回答 1

1

搜索开始的根目录位置是您的可执行文件正在运行的位置,而不是您运行的文件所在的DoString位置。

以下是一些 NLua 需要查找的位置示例,使用heaps.lua示例文件:

没有文件'./heaps.lua'
没有文件'./heaps/init.lua'
没有文件'./lua/heaps.lua'

例子:

可执行路径C:\foo\bar.exe

脚本路径C:\baz\qux.lua

qux.lua有一个要求heaps,NLua 将搜索C:\foo\堆而不搜索C:\baz\

于 2018-12-20T19:53:08.887 回答