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

试图调用全局`print'(零值)

发布时间:2020-12-16 05:01:50 所属栏目:百科 来源:网络整理
导读:我有以下C文件: //thing.c#include lua.h#include lauxlib.h#include lualib.h#include stdio.hlua_State* L;int main(){ L = lua_open(); lua_dostring(L,"print("lua")"); printf("hellon"); return 0; } 和以下makefile: default: gcc -I/usr/includ
我有以下C文件:
//thing.c
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>

#include <stdio.h>

lua_State* L;

int main(){
        L = lua_open();

        lua_dostring(L,"print("lua")");
        printf("hellon");

        return 0; }

和以下makefile:

default:
        gcc -I/usr/include/lua50 -L/usr/lib -o qwerty thing.c -llua50 -llualib50

代码构建得很好,但是当我运行它时,我得到以下内容:

[string "print("lua")"]:1: attempt to call global `print' (a nil value)
hello

注意:我已经看到了关于这个错误的许多其他问题,但它们都涉及直接在Lua中工作,而不是与C api相关.他们似乎也暗示问题在于从未定义过打印功能.我不明白这一点,因为我可以直接从命令行运行lua解释器和lua脚本.

编辑:我正在使用lua 5.0

解决方法

您必须在Lua中初始化库.拨打lua_open后,请致电
luaL_openlibs(L);

编辑:对于Lua 5.0,我相信您必须手动打开库.对于print函数,您只需要基本库:

luaopen_base(L);

(编辑:李大同)

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

    推荐文章
      热点阅读