lua脚本和应用程序的路径不同

时间:2010-03-22 00:28:30

标签: c++ lua

我的问题是我无法指定Lua查看路径。

例如,在我的脚本中,我有一个require("someScript")行可以完美地运行(当脚本独立运行时,它可以使用someScript中的函数。

然而,当我运行我的应用程序时,脚本失败。我相信这是因为Lua正在寻找相对于应用程序而不是相对于脚本的位置。

将整个路径硬编码到驱动器不是一个选项,因为人们可以在任何他们喜欢的地方下载游戏,所以我能走的最高的是游戏的根文件夹。

我们有XML文件来加载对象的信息。在其中,当我们指定对象使用的脚本时,我们只需执行类似Content/Core/Scripts/someScript.lua的操作,其中ContentDebug位于同一目录中且应用程序位于{{1}内}}。如果我尝试将它(Debug)放在Lua的package.path中,当我尝试独立运行脚本时会出现错误。

我真的被卡住了,我不知道如何解决这个问题。任何帮助表示赞赏。感谢。

P.S。当我在应用程序中打印出默认的package.path时,我看到Content/Core...之类的语法 按照......的顺序。

;.\?.lua我认为;.\?.lua;c:...(long file path)\Debug\?.lua;表示路径的结束,但我不知道;的含义。目录中的任何Lua文件?

1 个答案:

答案 0 :(得分:2)

您可以通过将自己的加载器放入require表来自定义package.loaders加载模块的方式。见这里:

http://www.lua.org/manual/5.1/manual.html#pdf-package.loaders

如果你想确保沙盒很好,你可能想要删除所有默认的加载器,并用一个完全符合你想要的东西替换它们,仅此而已。 (它可能与现有的一个类似,因此您可以将它们作为指南。)