4

我下载了 LuaEdit 以用作 IDE 和调试工具,但是即使是最简单的事情我也无法使用它。我创建了一个包含 2 个文件的解决方案,所有这些文件都存储在同一个文件夹中。我的文件如下:

--startup.lua

require("foo")

test("Testing", "testing", "one, two, three")


--foo.lua

foo = {}

print("In foo.lua")

function test(a,b,c) print(a,b,c) end

这在我的 C++ 编译器中通过一些嵌入代码访问时工作正常,但是当我尝试在 LuaEdit 中使用相同的代码时,它在第 3 行崩溃require("foo")并显示错误:

module 'foo' not found:
no field package.preload['foo']
no file 'C:\Program Files (x86)\LuaEdit 2010\lua\foo.lua'
no file 'C:\Program Files (x86)\LuaEdit 2010\lua\foo\init.lua'
no file 'C:\Program Files (x86)\LuaEdit 2010\foo.lua'
no file 'C:\Program Files (x86)\LuaEdit 2010\foo\init.lua'
no file '.\foo.lua'
no file 'C:\Program Files (x86)\LuaEdit 2010\foo.dll'
no file 'C:\Program Files (x86)\LuaEdit 2010\loadall.dll'
no file '.\battle.dll'

我还尝试在将这些文件添加到解决方案之前创建这些文件,但仍然出现相同的错误。我缺少一些设置吗?拥有一个 IDE/调试器会很棒,但如果它不能运行链接函数,它对我来说毫无用处。

4

2 回答 2

3

The issue is probably that your Lua files are not on the path in package.path (for C files this is package.cpath).

My guess is that the LuaEdit program is not launched in the directory you have your files in, and hence does not have a match for eg .\foo.lua.

You have 3 simple solutions to this (from dumb to smarter):

  • Find out what path LuaEdit considers as ./ and put your files there.
  • Open up a terminal in the right directory (the one containing your files), and run LuaEdit from there.
  • Add the path the files are on to package.path and package.cpath before doing any require's
于 2012-06-03T10:36:34.363 回答
3

您可能需要输入:

lua package.path = package.path..";c:/path/to/my/files/?.lua"

在任何要求之前的文件开头(如 jpjacobs 所示)。我找不到任何方法从 LuaEdit 本身提供这个。它似乎使用其完整路径运行脚本,但将其当前目录设置为 IDE 启动时的任何设置。如果您使用应用程序文件夹中的完整路径运行 LuaEdit ,即使没有更改也应该可以正常工作。package.path

虽然 IDE 本身可以与自己的模块/库一起正常工作,但这并不意味着它可以让它们运行的​​应用程序使用它们。

(无耻的插件)如果你仍然对 LuaEdit 不满意,我会提供ZeroBrane Studio Lua IDE作为替代方案,它基于相同的 wxLua 框架,但提供更多功能并且没有这个特殊问题重新面对。它还支持远程调试,因此您应该能够直接从您的应用程序中调试您的 Lua 脚本。

于 2012-06-10T03:38:52.337 回答