使用C ++代码获取Lua package.cpath和path
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用C ++代码获取Lua package.cpath和path相关的知识,希望对你有一定的参考价值。
我编写的C ++(使用Qt libs)项目是“嵌入式”Lua 5.1子系统,据我所知,它代表了lua_State
;为了设置外部Lua模块(.lua
文件)和库(.dll
或.so
文件取决于操作系统)的存储位置,以便它们可以根据需要为required
,我需要操纵全局package.path
和package.cpath
表成员。
我有能够用C ++代码成功设置这些条目的代码,我可以在嵌入式系统中看到结果。
但是我似乎无法从C ++方面获得它们。目前,对于package.path
,我有以下内容:
QString TLuaInterpreter::getLuaPath()
{
lua_State* L = pGlobalLua;
if (!L) {
qDebug() << "LUA CRITICAL ERROR: in TLuaInterpreter::getLuaPath - no suitable Lua execution unit found.";
return QString("LUA CRITICAL ERROR");
}
lua_getglobal(L, "package.path");
lua_getfield(L, LUA_GLOBALSINDEX, "package.path");
QString result(QString::fromUtf8(lua_tostring(L, 1)));
return result;
}
我希望;
分隔的条目列表如:
./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua
但我只得到一个空的QString
回来。现在我对Lua并不熟悉C / C ++,所以有可能这是一个lua堆栈操作问题,但我确信我有正确的lua_State
实例 - 所以这个方法有什么问题?
答案
你不能立刻lua_getglobal(L, "package.path")
,你必须先在堆栈上获得package
然后path
。
以上是关于使用C ++代码获取Lua package.cpath和path的主要内容,如果未能解决你的问题,请参考以下文章