Lua的loadfile()函数无法在同一目录下找到文件。
2014-3-14 1:23:47
收藏:0
阅读:92
评论:2
奇怪的问题。
我有一个Lua脚本('human.lua'),通过C ++应用程序中的dofile()执行。
我尝试以相当标准的方式在第一行加载另一个文件,这是一个AI脚本:
behavior_chunk = assert(loadfile(“testBehavior.lua”))
这会抛出“无法打开testBehavior.lua:没有这样的文件或目录”。 testBehavior.lua与human.lua在同一个目录中。
这是怎么发生的? 可能某种方式设置了package.path吗? 我对此进行了大量研究,但无法找到可能导致此特定问题的原因。
也许我错过了一些非常明显的东西。
点赞
用户3418022
感谢更新。
然而,在 C++ 中加载脚本可以无缝运行,但是当我从加载了 C++ 的 Lua 脚本中加载另一个 Lua 脚本时就会出现问题:
behavior_chunk = assert(loadfile("testBehavior.lua"))
我应该如何正确地在 Lua 脚本中(而不是在 C++ 中)使用 loadfile 来加载同一目录或子目录中的另一个 Lua 文件?
我的想法是,我从 C++ 中的 'scripts' 目录中加载了 'human.lua'。现在,在 'human.lua' 中,我加载了位于该脚本相同目录中的另一个脚本,那么为什么这不起作用呢?
也许我没有讲清楚。如果是这样,我很抱歉。
2014-03-17 18:29:52
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
loadfile路径是相对于工作目录的,而不是相对于脚本位置的。因此,如果你从文件夹A启动 Lua 来运行B\human.lua,那么human.lua中的loadfile("C/testBehavior.lua")将在A/C中查找testBehavior.lua,而不是B/C。因此,如果您的文件夹结构如下:
Foo yourLuaApp.exe Scripts human.lua file1.lua file2.lua ai testBehavior.lua假设您有 C++ 代码:
int main(argc, char* argv[]) { ... 初始化 Lua ... std::string fullname = "scripts/" + argv[1]; if (luaL_dofile(pLua, fullname.c_str())) std::cerr << "error" << endl; else std::cout << "success" << endl; }那么您会得到以下结果:
但是,如果您从
Scripts文件夹启动您的应用程序,它不包含名为Scripts的文件夹,因此您会得到以下结果:C:\Foo\Scripts> ../yourLuaApp.exe file1.lua error