簡體   English   中英

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 %d\n", sum);
  lua_close(L);

  return 0;
}

add.lua

function add(x, y) do
  return x + y
end
end

你能告訴我,我哪里錯了。 提前致謝。

您知道嗎,我遇到了同樣的問題,並通過意識到在從代碼塊運行某些內容時, 它沒有與可執行文件所在的磁盤上相同的工作目錄來解決了該問題 從cmd運行以確保我具有正確的工作目錄時, 確保我的c ++程序確實可以找到lua文件,並ideone處驗證lua代碼中的錯誤,我才能成功運行。 現在,您的問題可能是其他問題,但是至少嘗試這些步驟,並讓我們知道它的運行方式。

確保您的文件名是add.lua ,而不是lua.add 。因為我曾經誤輸入名稱,並且所輸入的錯誤與您的相同。正確更改后,它就可以了。不要忘記將其放在相同的位置可執行文件的目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM