Ich habe die folgende C-Datei:Versuch global `print‘ zu nennen (ein Null-Wert)
//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; }
und die folgende Make-Datei:
default:
gcc -I/usr/include/lua50 -L/usr/lib -o qwerty thing.c -llua50 -llualib50
der Code nur in Ordnung baut, aber wenn ich führen sie es ich folgendes erhalten:
[string "print("lua")"]:1: attempt to call global `print' (a nil value)
hello
Hinweis: ich habe die vielen anderen Fragen gesehen auf diesen Fehler, aber sie alle befassen sich mit der Arbeit direkt in Lua, im Gegensatz zu mit dem CAPI. Sie scheinen auch zu implizieren, dass das Problem darin besteht, dass die print
-Funktion nie definiert wurde. Ich verstehe das nicht, da ich sowohl einen Lua-Interpreter als auch ein Lua-Skript direkt von der Kommandozeile ausführen kann.
EDIT: Ich bin mit lua 5,0
'thing.c :(text + 0x20):. Undefined Verweis auf‚luaL_openlibs'' Noteworthy: Ich bin mit lua 5,0 – ewok
@ewok finden Sie bearbeiten . Da Sie jedoch einen Verknüpfungsfehler (und keinen Compilerfehler) erhalten, denke ich, dass Sie den 5.1- oder 5.2-Header einschließen, aber die 5.0-Bibliothek verknüpfen. Ich sehe, dass Sie den 5.0 Include-Pfad angeben, aber ich frage mich, ob Sie die 5.1- oder 5.2-Header irgendwo in Ihrem Standard-Include-Pfad haben? –