2012-04-11 16 views
1

Plattform: (wo Lua und LuaSocket portiert werden) Ein Embedded-System mit ARM 7-Entwicklungsboard, auf dem Drittanbieter-RTOS mit TCP/IP-Stack ausgeführt wird.LuaSocket - Versuch, Feld 'try' (ein Nullwert) aufzurufen

Was funktioniert:

  • Verwendung von Lua-Standardbibliothek wie "io" Anrufe, drucken, behaupten, etc
  • durch UDP-Pakete sendet die udp = assert (socket.udp) Methode verwendet wird, behaupten (udp: send (etwas))

Problem: Bei der Ausführung ein Beispiel smtp lua Script:

local smtp = require("socket.smtp") 
from = "myEmail" 
rcpt = {"<someOne's Email>"} 
mesgt = { heasers = {someHeader}, body = "Hello World" } 
r, e = smtp.send { 
    from = from, 
    rcpt = rcpt, 
    source = smtp.message(mesgt), 
    server = "someServer", 
    port = 25, 
} 

-- an error returns after execution: 
-- lua\socket\smtp.lua:115: attempt to call field 'try' (a nil value) 

-- Corresponding code in smtp.lua around line 115: 

function open(server, port, create) 
    local tp = socket.try(tp.connect(server or SERVER, port or PORT, 
     TIMEOUT, create)) 
    local s = base.setmetatable({tp = tp}, metat) 
    -- make sure tp is closed if we get an exception 
    s.try = socket.newtry(function() 
     s:close() 
    end) 
    return s 
end 

// Where try = newtry() in socket.lua and the corresponding C code is the same 
// from the one provided with the library for UNIX: 
static int global_newtry(lua_State *L) { 
    lua_settop(L, 1); 
    if (lua_isnil(L, 1)) lua_pushcfunction(L, do_nothing); 
    lua_pushcclosure(L, finalize, 1); 
    return 1; 
} 

Antwort

2

Nun, da der Fehler besagt, dass "try is nil" ist, ist meine Vermutung, dass die C lib nicht korrekt oder nicht vollständig mit Ihrem Lua verknüpft ist. Dies könnte das Ergebnis einer fehlerhaften Installation, einer fehlenden Lib oder etwas in dieser Art sein.

+0

Hallo Kikito, Danke für Ihre Hilfe. Ich denke, ich habe das Problem behoben, indem ich meine Socket- "Core" -Bibliothek, die ich vorher nicht richtig gemacht hatte, statisch verknüpfte. Vielen Dank! – user1325966

+0

In diesem Fall könnten Sie bitte meine Antwort als gültig markieren? Klicken Sie einfach auf das "graue ✔-Symbol" links von dieser Antwort, so dass es grün wird. – kikito

+0

Das ist mir auch passiert. In der Tat fehlt ihm diese Lib https://github.com/hjelmeland/try-lua/blob/master/try.lua. –

Verwandte Themen