Lua errorPANIC:调用 Lua API 时出现不受保护的错误(尝试调用 nil 值)
Lua errorPANIC: unprotected error in call to Lua API (attempt to call a nil value)
这是代码,执行时得到错误:"PANIC:调用Lua API时出现不受保护的错误(尝试调用nil值)"
#include <stdio.h>
extern "C"{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};
lua_State *L;
int luaAdd(int x, int y)
{
int sum;
lua_getglobal(L, "add");
lua_pushnumber(L, x);
lua_pushnumber(L, y);
lua_call(L, 2, 1);
sum = (int)lua_tonumber(L, -1);
lua_pop(L, 1);
return sum;
}
int main(int argc, char *argv[])
{
int sum = 0;
L = lua_open();
luaL_openlibs(L);
luaL_dofile(L, "add.lua");
sum = luaAdd(10, 15);
printf("The sum is %dn", sum);
lua_close(L);
return 0;
}
添加.lua
function add(x, y) do
return x + y
end
end
你能告诉我,我错在哪里。提前谢谢。
你知道吗,我遇到了同样的问题,并通过意识到从代码块运行某些内容时,它与磁盘上可执行文件所在的位置没有相同的工作目录来解决它。当从cmd运行以确保我有正确的工作目录,确保我的c ++程序真的可以找到lua文件,并在ideone上验证我的lua代码是否存在错误时,我能够成功运行。现在,您的问题可能是其他问题,但至少请尝试这些步骤,并让我们知道它是如何进行的。
确保文件名是add.lua,而不是lua.add。因为我曾经弄错了名字,错误和你的一样。正确更改后,它起作用了。并且不要忘记将其与可执行文件放在同一目录中。
相关文章:
- 调用 lua 函数的地址为 C/C++?
- C++-在没有自定义.lib文件的情况下从Lua C模块调用Lua函数
- 使用二进制参数调用LUA方法
- 从c++调用lua函数时,如何使表和变量值保持不变
- C++ - 调用 Lua 函数始终返回 0
- 从C++调用 lua 函数时"Error in error handling"
- Lua errorPANIC:调用 Lua API 时出现不受保护的错误(尝试调用 nil 值)
- 从C++中调用Lua函数
- 在 c++ 中调用 lua 函数(带有 require 'nn')
- 在C++中从表调用lua函数
- 在线程中从C++调用Lua
- 从缺少参数C++调用 Lua 函数
- tolua++从C++代码中调用Lua函数
- LuaPlus:如何从多线程C++中调用Lua函数
- 从不同的线程调用Lua函数(在C++中嵌入Lua)可以吗
- 从c++中调用Lua表函数w/ self in函数
- 从string_t调用Lua函数
- 当Lua被绑定到类中时,使用LuaBind在类中调用Lua函数
- 使用自定义数据作为函数参数调用lua回调
- 调用Lua:使用setField来指向自身