当Lua文件都在同一个文件夹中时,LuaEdit无法找到模块。

我下载了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 /调试器虽然很棒,但对我来说毫无用处。

点赞
用户513763
用户513763

问题可能是你的 Lua 文件没有在 package.path (对于 C 文件来说是 package.cpath)路径下。

我猜测 LuaEdit 程序没有在你存放文件的目录启动,因此没有匹配到 .\foo.lua 这样的文件。

你有三个简单的解决方案(从简单到聪明):

  • 找到 LuaEdit 认为的 ./ 路径并将你的文件放到那里。
  • 在正确的目录中打开终端(包含你的文件的目录)并从那里运行 LuaEdit。
  • 在任何 require 之前将文件所在的路径添加到 package.pathpackage.cpath 中。
2012-06-03 10:36:34
用户1442917
用户1442917

你可能需要在你的文件开头添加:

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 脚本。

2012-06-10 03:38:52