我有以下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; }
和以下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);