我来自更多的Python和CTYPES背景......并试图找出从Lua脚本调用标准C共享库的最佳方法。Lua脚本调用C共享库的最佳方式是什么?
我听说过“Alien”(http://alien.luaforge.net/),但我不确定它的电流是多少?意思是更新regulary?
例如,我知道他是一个SQLite Lua库,但我们可以说我想调用在编译SQLIte时创建的SQLite共享库?
因此,例如:在我的情况下的lib是/usr/local/lib/libsqlite3.so
如果我写了一个小的虚拟脚本,只是为了看看它是否能够加载的lib
require "libsqlite3"
print "hello"
我得到以下错误:
[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$
这是否意味着Lua中不能调用共享库“开箱即用”,而我不得不使用一些像外星人?
我知道我也可以通过包含Lua头文件的方式对共享库进行编码,并且我可以制作“Lua函数”......我只是希望我可以调用共享库“standard “在箱子上。
并帮助或建议将不胜感激;-)
感谢
林顿
你知道Alien是否被广泛用于生产?我认为它像Python的CTYPES一样坚如磐石? – 2010-11-12 08:30:50
我看着它,似乎Python ctypes也使用libffi,这是Alien在Lua中使用的。因此,它应该像Python ctypes一样“坚如磐石”:) – 2010-11-12 16:03:26