Qt with Lua |放置 lua 文件的位置

Qt with Lua | Where to place lua file(s)

本文关键字:文件 位置 lua 放置 with Lua Qt      更新时间:2023-10-16

我创建了一个 cpp 文件,其中包含实现对 lua 调用的 main 方法。编译+执行qt项目时,我收到以下错误:

PANIC:调用 Lua API 时出现不受保护的错误(尝试调用字符串值)

问题是lua

找不到要执行的lua文件(至少我认为是这样)。所以我将文件复制到所有调试目录和主目录,但它仍然不起作用。

谢谢你帮助我!


主.cpp

#include <stdio.h>
extern "C" {
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
}
lua_State* L;
int main(int argc, char *argv[])
{

    /* initialize Lua */
    L = luaL_newstate();
    /* load Lua base libraries */
    luaL_openlibs(L);
    /* load the script */
    luaL_loadfile(L, "test.lua");
    lua_call(L, 0, 0);
    /* cleanup Lua */
    lua_close(L);
}

和文件测试.lua

-- test
print("Hello World")

鉴于这是一个运行时文件操作,该函数可能只在当前目录中查找。

似乎Qt使用用户的目录作为默认路径。

你可以用以下方法验证这一点:(谢谢里奇)

QDir dir(".");
qDebug() << dir.absolutePath();

将lua脚本放入此文件夹时,一切都像魅力一样工作。

可以使用以下命令设置工作目录:

QDir::setCurrent()

并结合

QCoreApplication::applicationFilePath() 

可以将路径设置为exe辞职的位置。

这与Qt没有真正的关系,因为你没有在软件中使用任何Qt API。

应检查 lual_loadfile 方法返回的状态,如本例所示。这应该会给你一些关于出了什么问题的额外线索。

以防万一,有一个QtLua模块可能会引起人们的兴趣。