我下载了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 /调试器会很棒,但如果它无法运行链接函数,那对我来说就没用了。
答案 0 :(得分:3)
问题可能是您的Lua文件不在package.path
的路径上(对于C文件,这是package.cpath
)。
我的猜测是LuaEdit程序没有在您的文件所在的目录中启动,因此与.\foo.lua
没有匹配。
你有3个简单的解决方案(从哑到聪明):
require
之前,将文件所在的路径添加到package.path
和package.cpath
答案 1 :(得分:3)
您可能需要输入:
lua
package.path = package.path..";c:/path/to/my/files/?.lua"
在任何require之前的文件开头(如jpjacobs所示)。我找不到任何方法从LuaEdit本身提供这个。它似乎使用其完整路径运行脚本,但将其当前目录设置为IDE启动时的任何设置。如果您使用您的应用程序文件夹中的完整路径运行LuaEdit,即使没有package.path
更改,它也应该可以正常工作。
虽然IDE本身可以使用自己的模块/库,但并不意味着它可以运行它所使用的应用程序。
(无耻的插件)如果你对LuaEdit仍然不满意,我会提供ZeroBrane Studio Lua IDE作为替代,它基于相同的wxLua框架,但提供了更多的功能,并没有这个你面临的特殊问题。它还支持远程调试,因此您应该能够直接从应用程序调试Lua脚本。