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

时间:2017-01-15 23:00:21

标签: c++ qt lua qt-creator

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

  

PANIC:调用Lua API时无保护错误(尝试调用字符串值)

问题是lua无法找到要执行的lua文件(至少我认为是)。所以我将文件复制到所有调试目录和主目录,但它仍然无效。

感谢您的帮助!

的main.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);

}

和文件test.lua

-- test

print("Hello World")

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

您可以使用以下方式对此进行验证:(感谢Rich

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

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

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

QDir::setCurrent()

结合使用
QCoreApplication::applicationFilePath() 

可以将路径设置为exe所在的位置。

答案 2 :(得分:0)

这与Qt并不真正相关,因为您没有在软件中使用任何Qt API。

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

以防万一,可能会感兴趣QtLua module