我有更多的 Python 和 CTYPES 背景...并且正在尝试找出从 Lua 脚本调用标准 C 共享库的最佳方法。
我听说过“Alien”(http://alien.luaforge.net/),但不确定它的最新情况如何?意思是定期更新吗?
例如,我知道它是一个 SQLite Lua 库,但假设我想调用编译 SQLite 时创建的 SQLite 共享库?
例如:在我的例子中,lib 位于 /usr/local/lib/libsqlite3.so 中
如果我写一个小虚拟脚本只是为了看看它是否可以加载库
require "libsqlite3"
print "hello"
我收到以下错误:
debian@debian:~/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 ?
debian@debian:~/Desktop/SQLite Test$
这是否意味着 Lua 无法“开箱即用”调用共享库,而我必须使用 Alien 之类的东西?
我知道我还可以以包含 Lua 头文件的方式对共享库进行编码,并且我可以制作“Lua 函数”...我只是hoping我可以调用盒子上“标准”的共享库。
非常感谢帮助或建议;-)
Thanks
Lynton
Lua 无法直接调用 C 库。它不随 libffi 一起提供,因此不能像 ctypes 那样工作。
从历史上看,lua 被嵌入到应用程序中,应用程序又将所需的函数添加到 lua 表中,并提供 lua 堆栈操作来传递和返回参数。
Alien 是 libffi 的改编版本并且可以工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)