在加载 Lua 脚本时出现语法错误

我正在尝试在应用程序中使用 Lua,但是在使用 lua_loadBuffer 加载脚本时,会出现错误消息。

LuaContext := lua_newstate(@Alloc, nil);
  try
    luaL_openlibs(LuaContext);
    s := 'print("hi")';
    lua_register(LuaContext, 'print', @print_func);
    if luaL_loadbuffer(LuaContext, PChar(s), Length(s), PChar('sample1')) <> 0 then
    begin
      raise Exception.Create(lua_tostring(LuaContext, -1));  //<- 这里出现以下错误消息:[string "sample1"]:1: syntax error
    end;
    if lua_pcall(LuaContext, 0, 0, 0) <> 0 then
      Exception.Create('');
  except
      Debugln('Error: ' + lua_tostring(LuaContext, -1));
  end;

据我所知,Lua 代码是合法的,对吧?仅仅一个“语法错误”并不能提供太多具体信息,而我没有任何 Lua 的经验,也不知道去哪里查找错误。

点赞
用户1847592
用户1847592

Lua 不支持 UTF-16 字符串。

为了确保您的数据使用 1 字节的代码页进行编码,请使用 AnsiStringPAnsiChar,而不是 StringPChar

2016-05-25 19:24:04