Qt 与 Lua |放置 lua 个文件的位置
Qt with Lua | Where to place lua file(s)
我创建了一个 cpp 文件,其中的主要方法实现了对 lua 的调用。
编译 + 执行 qt 项目时,我收到以下错误:
PANIC: unprotected error in call to Lua API (attempt to call a string value)
问题是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")
这与 Qt 没有真正的关系,因为您没有在您的软件中使用任何 Qt API。
您应该检查 lual_loadfile
方法返回的状态,如 this example 所示。这应该会为您提供一些关于问题所在的额外线索。
以防万一,QtLua module 可能会引起您的兴趣。
鉴于这是一个 run-time 文件操作,该函数可能只查找当前目录。
Qt 似乎使用用户的目录作为默认路径。
您可以通过以下方式验证这一点:(感谢 )
QDir dir(".");
qDebug() << dir.absolutePath();
将 lua 脚本放入此文件夹后,一切正常。
可以使用以下命令设置工作目录:
QDir::setCurrent()
并结合
QCoreApplication::applicationFilePath()
路径可以设置为exe退出的地方。
我创建了一个 cpp 文件,其中的主要方法实现了对 lua 的调用。 编译 + 执行 qt 项目时,我收到以下错误:
PANIC: unprotected error in call to Lua API (attempt to call a string value)
问题是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")
这与 Qt 没有真正的关系,因为您没有在您的软件中使用任何 Qt API。
您应该检查 lual_loadfile
方法返回的状态,如 this example 所示。这应该会为您提供一些关于问题所在的额外线索。
以防万一,QtLua module 可能会引起您的兴趣。
鉴于这是一个 run-time 文件操作,该函数可能只查找当前目录。
Qt 似乎使用用户的目录作为默认路径。
您可以通过以下方式验证这一点:(感谢
QDir dir(".");
qDebug() << dir.absolutePath();
将 lua 脚本放入此文件夹后,一切正常。
可以使用以下命令设置工作目录:
QDir::setCurrent()
并结合
QCoreApplication::applicationFilePath()
路径可以设置为exe退出的地方。