0

これはコードです。実行時にエラーが発生します:「パニック: 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

どこが間違っているのか教えてください。前もって感謝します。

4

2 に答える 2

1

ご存知のように、私は同じ問題を抱えていて、コードブロックから何かを実行するときに、実行可能ファイルが存在するディスク上の場所と同じ作業ディレクトリがないことに気付いて解決しました。cmd から実行して正しい作業ディレクトリがあることを確認し、C++ プログラムが実際に lua ファイルを見つけられることを確認し、ideoneで lua コードのエラーを検証すると、正常に実行できました。さて、あなたの問題は別のものかもしれませんが、少なくともこれらの手順を試して、どうなったかをお知らせください.

于 2014-05-25T07:44:21.687 に答える