首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置Lua脚本的要求搜索路径

设置Lua脚本的要求搜索路径
EN

Stack Overflow用户
提问于 2018-07-13 07:59:35
回答 1查看 2.3K关注 0票数 3

我试图从一个Lua脚本中使用require,这个脚本是我使用luaL_loadstring加载的。

这是我的密码:

代码语言:javascript
复制
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_settop(L, 0);
const char *script = "require('test.lua')";
const int ret = luaL_loadstring(L, script);
if (ret || lua_pcall(L, 0, LUA_MULTRET, 0))
{
    std::cout << "Error: " << lua_tostring(L, -1) << std::endl;
}
lua_close(L);

但是,当我运行代码时,我会得到以下错误。

代码语言:javascript
复制
Error: [string "require('test.lua')"]:1: module 'test.lua' not found:
no field package.preload['test.lua']
no file '/usr/local/share/lua/5.3/test/lua.lua'
no file '/usr/local/share/lua/5.3/test/lua/init.lua'
no file '/usr/local/lib/lua/5.3/test/lua.lua'
no file '/usr/local/lib/lua/5.3/test/lua/init.lua'
no file './test/lua.lua'
no file './test/lua/init.lua'
no file '/usr/local/lib/lua/5.3/test/lua.so'
no file '/usr/local/lib/lua/5.3/loadall.so'
no file './test/lua.so'
no file '/usr/local/lib/lua/5.3/test.so'
no file '/usr/local/lib/lua/5.3/loadall.so'
no file './test.so'

是否可以为Lua脚本设置搜索路径,以便我可以使用相对路径使用require

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-13 11:15:48

多亏了@Henri_Menke,我可以使用下面的代码来工作。

代码语言:javascript
复制
/* set the current working directory */
const char *currentDir = "directory/to/script";
chdir(currentDir);
/* init lua and run script */
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_settop(L, 0);
const char *script = "require('test')";
const int ret = luaL_loadstring(L, script);
if (ret || lua_pcall(L, 0, LUA_MULTRET, 0))
{
    std::cout << "Error: " << lua_tostring(L, -1) << std::endl;
}
lua_close(L);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51320354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档