gpt4 book ai didi

c - 尝试调用全局 `print'(零值)

转载 作者:太空狗 更新时间:2023-10-29 17:20:45 24 4
gpt4 key购买 nike

我有以下 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("hello\n");

return 0; }

和以下生成文件:

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。它们似乎还暗示问题在于从未定义过 print 函数。我不明白这一点,因为我可以直接从命令行运行 lua 解释器和 lua 脚本。

编辑:我正在使用 lua 5.0

最佳答案

你必须在 Lua 中初始化库。在你调用lua_open之后,调用

luaL_openlibs(L);

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

luaopen_base(L);

关于c - 尝试调用全局 `print'(零值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11849898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com