Lua errorPANIC:调用Lua API时出现无保护错误(尝试调用nil值)

时间:2012-08-18 11:00:01

标签: c++ lua

这是代码,当执行获取错误时:“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 %d\n", sum);
  lua_close(L);

  return 0;
}

add.lua

function add(x, y) do
  return x + y
end
end
你能告诉我,我哪里错了。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

你知道吗,我遇到了同样的问题,并且通过意识到从codeblocks运行某些​​东西时解决了它,它没有与可执行文件的磁盘上的工作目录相同的工作目录。当从cmd运行以确保我有正确的工作目录时,确保我的c ++程序确实可以找到lua文件,验证我的lua代码是否在ideone处发现错误,我当时能够成功运行。现在,您的问题可能是其他问题,但至少请尝试这些步骤,并告诉我们它是如何进行的。

答案 1 :(得分:0)

确保你的文件名是 add.lua ,而不是 lua.add 。因为我曾经误认了这个名字,而且出现的错误和你的一样。我改了之后正确地,它工作。并且不要忘记将它与您的可执行文件放在同一目录中。