加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua 5.2 C api中的语法更改

发布时间:2020-12-14 21:49:05 所属栏目:大数据 来源:网络整理
导读:我试图编译 Programming in Lua书中提供的示例 但仅适用于lua 5.1,在5.2上执行此操作的步骤是什么? 这是我正在使用的代码 #include stdio.h#include string.h#include lua.h#include lauxlib.h#include lualib.hint main (void) { char buff[256]; int erro
我试图编译 Programming in Lua书中提供的示例

但仅适用于lua 5.1,在5.2上执行此操作的步骤是什么?

这是我正在使用的代码

#include <stdio.h>
#include <string.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>

int main (void) {
  char buff[256];
  int error;
  lua_State *L = lua_open();   /* opens Lua */
  luaL_openlibs(L);  
  while (fgets(buff,sizeof(buff),stdin) != NULL) {
    error = luaL_loadbuffer(L,buff,strlen(buff),"line") ||
      lua_pcall(L,0);
    if (error) {
      fprintf(stderr,"%s",lua_tostring(L,-1));
      lua_pop(L,1);  /* pop error message from the stack */
    }
  }
  lua_close(L);
  return 0;
}

用gcc test01.c -I /usr/include / lua5.2 -L /usr/lib / x86_64-linux-gnu -llua5.2编译后出现以下错误:

test01.c: In function ‘main’:
test01.c:10:18: warning: initialization makes pointer from integer without a cas
t [enabled by default]                                                         
   lua_State *L = lua_open();   /* opens Lua */
                  ^
/tmp/ccyPRlV3.o: In function `main':
test01.c:(.text+0x21): undefined reference to `lua_open'
collect2: error: ld returned 1 exit status

先感谢您.

解决方法

luaopen()不再使用,它??被luaL_newstate取代,你可以使用 luaL_newstate创建一个具有标准分配函数的状态:

lua_State *L = luaL_newstate();    /* opens Lua */
luaL_openlibs(L);                  /* opens the standard libraries */

此API已更改since Lua 5.1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读