私がコーディングしているC++(Qtライブラリを使用しています)プロジェクトは、「理解しているように」lua_State
で表される「組み込みの」Lua 5.1サブシステムです。外部のLuaモジュール(.lua
ファイル)とライブラリ(OSに応じて.dll
または.so
ファイル)が格納される場所を設定するには、グローバルpackage.path
およびpackage.cpath
テーブルメンバーを操作する必要があります。C++コードでLua package.cpath&pathを取得しています
をに設定して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
を取得します。今は私がC/C++のようにLuaをよく知っているわけではないので、これはLUAのスタック操作の問題かもしれませんが、私は正しいlua_State
インスタンスを持っていると確信しています - この方法で何が間違っていますか?