Fehler beim laden des Moduls (Lua)
Ich bin Probleme mit diesem Fehler, die ich erhalte, wenn ich meine Anwendung. Der Fehler ist:
loop or previous error loading module 'socket'
.
Den code, der diesen Fehler verursacht wird:
socket = require("socket")
.
Dieser Fehler tritt während der ersten lua_pcall
. Hier ist die Funktion, die fordert, dass:
void startTerminal(int port, char host[80])
{
lua_State *L = lua_open();
/* Open Lua Library */
luaL_openlibs(L);
/* Choose the lua file that will run */
if(luaL_loadfile(L, "socket.lua")) {
lfatal(L, "luaL_loadfile() failed");
}
/* Start lua file */
if(lua_pcall(L, 0, 0, 0)) {
lfatal(L, "lua_pcall()");
}
/* Get connect function */
lua_getglobal(L, "connect");
if(!lua_isfunction(L, -1)) {
lua_pop(L, 1);
lfatal(L, "lua_isfunction() failed");
}
/* Setup arguments */
lua_pushnumber(L, port);
lua_pushstring(L, host);
/* Call the lua function */
if(lua_pcall(L, 2, 2, 0)) {
lfatal(L, "lua_pcall() failed");
}
/* Print out results */
printf("%s", lua_tostring(L, -1));
printf("%s", lua_tostring(L, -1));
lua_close(L);
}
Hier ist, wie ich bin kompilieren Sie den code:
gcc -Wall -o terminal attacker.c -I/usr/include/lua5.1 -llua5.1 -lm
Fehlen mir alle Schalter beim kompilieren oder bin ich die fehlende library?
HINWEIS:
Der compiler löst keine Fehler und kompiliert sauber.
In anderen Lua-Anwendungen, die keine C, ich habe kein problem mit require("socket")
.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist verdächtig. Sehr verdächtig.
Unter Verwendung der standard-Lua-loader, wenn Sie
require("MODULE_NAME")
, die sehr erste, was es Aussehen wird (nach überprüfung, um zu sehen, wennMODULE_NAME
war bereits geladen) werden "MODULNAME.lua". Im aktuellen Verzeichnis. Die gibt es sicherlich. Es heißtsocket.lua
, der sehr Datei, die Sie geladen haben, und versuchen, Sie zu führen. Also, es geht, um zu versuchen zu ladensocket.lua
als Modul.Und da
socket.lua
hatrequire("socket")
in es, es lädt sich wieder neu. Und wieder. Und wieder.Gut, es wird nicht da Lua-Paket-Lader-system ist intelligent genug, zu erkennen, loops und ein Fehler ausgegeben. Das ist genau das, was er Tat.
Also nicht der name einer Datei
MODULE_NAME.lua
wenn Sie tatsächlich zu verlangen, dass ein Modul mit diesem Namen.