Vengo da più di uno sfondo Python e CTYPES ... e sto cercando di trovare il modo migliore per chiamare una lib di C condivisa standard dallo script Lua.Il modo migliore per lo script Lua di chiamare una lib di C condivisa?
Ho sentito parlare di "Alien" (http://alien.luaforge.net/), ma non sono sicuro di quanto sia attuale? Significato è aggiornato regolarmente?
Ad esempio, so che questa è una libreria Lua SQLite ma diciamo che volevo chiamare la lib di SQLite che viene creata quando compilo SQLIte?
Così, per esempio: Nel mio caso il lib è in /usr/local/lib/libsqlite3.so
Se scrivo un piccolo script fittizio solo per vedere se è possibile caricare il lib
require "libsqlite3"
print "hello"
ottengo il seguente errore:
[email protected]:~/Desktop/SQLite Test$ lua sqlite_test.lua
lua: error loading module 'libsqlite3' from file '/usr/local/lib/lua/5.2/libsqlite3.so':
/usr/local/lib/lua/5.2/libsqlite3.so: undefined symbol: luaopen_libsqlite3
stack traceback:
[C]: in ?
[C]: in function 'require'
sqlite_test.lua:1: in main chunk
[C]: in ?
[email protected]:~/Desktop/SQLite Test$
questo vuol dire che Lua non può chiamare librerie condivise "fuori dagli schemi" e che devo usare qualcosa come Alien?
So che posso anche codificare il lib condivisa in modo tale che esso include i file di intestazione Lua e posso fare "Funzioni Lua" ... ero solo sperando ho potuto chiamare librerie condivise che sono "di serie " sulla scatola.
e aiutare o consigliare sarebbe molto apprezzato ;-)
Grazie
Lynton
Sai se Alien è ampiamente utilizzato nella produzione? Presumo che sia solido come Python CTYPES? –
L'ho esaminato, e sembra che anche i ctype Python utilizzino libffi, che è quello che Alien usa in Lua.Pertanto, dovrebbe essere "rock solido" come ctypes Python :) –