Lua-loadfile()在同一目录中找不到文件
Lua loadfile() cannot find file in same directory
这里有奇数问题。我有一个Lua脚本('human.loa'(,它是通过C++应用程序中的dofile()
执行的。
我试图在第一行加载另一个文件,它是一个非常标准的AI脚本:
behavior_chunk = assert(loadfile("testBehavior.lua"))
这引发了"无法打开testBehavior.rua:没有这样的文件或目录"。testBehavior.loa与human.loa.位于同一目录中
这是怎么发生的?package.path可能被错误地设置了吗?我对此做了很多研究,但找不到是什么原因导致了这个特定的问题。
也许我错过了一些显而易见的东西。
loadfile
路径是相对于工作目录的,而不是相对于脚本位置的。因此,如果您从文件夹A
启动Lua以运行Bhuman.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[])
{
... init Lua ...
std::string fullname = "scripts/" + argv[1];
if (luaL_dofile(pLua, fullname.c_str()))
std::cerr << "error" << endl;
else
std::cout << "success" << endl;
}
然后你会得到这些结果:
C:Foo> yourLuaApp.exe file1.lua
success
C:Foo> yourLuaApp.exe aitestBehavior.lua
success
但是
C:FooScripts> ../yourLuaApp.exe file1.lua
error
因为您是从Scripts
文件夹启动应用程序的,该文件夹不包含名为Scripts
的文件夹。
感谢您的更新。
然而,在C++中加载脚本是完美的,当我从WITHINE加载Lua脚本时,问题就出现了,我从C++加载了Lua脚本:
behavior_chunk = assert(loadfile("testBehavior.lua"))
如何正确使用Lua脚本(而不是C++(中的loadfile来加载同一目录或子目录中的另一个Lua文件?
我的理由是,我从C++中的"scripts"目录加载了"human.loa"。现在,在"human.loa"中,我加载了另一个与该脚本位于同一目录中的脚本,为什么不起作用呢?
也许我说得不够清楚。如果是这样的话,我道歉。
相关文章:
- C++ ZBar cmake 错误"找不到文件"时包括
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- C++找不到文件
- Windows Subsystem for Linux (WSL) 下的间歇性随机"找不到文件"错误
- Makefile在Linux中工作,但在Windows下不起作用,在子目录中找不到文件
- Nemiver 找不到文件 /build/glibc-LK5gWL/glibc-2.23/stdlib/random.c
- 在 Windows 10 上找不到 ./****.h 文件 qt5,C++
- 找不到文件或目录
- ld:找不到文件:/usr/lib/crt1.o
- sip:找不到文件"QtGui/QtGuimod.sip"
- 生成文件错误 - 找不到文件 - *.cpp
- 错误53:找不到文件,而是路径中存在所有DLL
- YAML::LoadFile(std::string const&) 找不到文件 [ROS 中的 yaml-cpp]
- 在英特尔C++编译器 (Linux) 的配置搜索路径中找不到文件可执行文件
- CMake 包含错误(找不到文件、未定义引用)
- 尝试包含id3lib标头时出现找不到文件错误
- 在iOS设备上找不到文件QT创建者C QstandardPaths :: StandardLocations(Qs
- 生成可执行文件时找不到文件,但在eclipse c 中运行正常
- Rcpp:将C++函数移植到 R 中,'Rcpp.h'找不到文件
- CodeBlocks MinGW版本找不到文件,必须手动包含在链接器中