我来自更多的Python background...and,我正试图找到从Lua脚本调用标准C共享库的最佳方法。
我听说过“异形”(http://alien.luaforge.net/),但不知道它有多流行?意味着它是定期更新的?
例如,我知道它们是一个SQLIte Lua库,但是假设我想调用在编译SQLite时创建的SQLite共享库?
因此,例如:在我的示例中,lib位于/usr/local/lib/libsqlite3.so
如果我写一个小的虚拟脚本,看看它是否能加载lib
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不能“公开”共享库,而我必须使用类似“异形”的东西?
我知道我也可以用这样的方式编写共享库,它包括Lua头文件,我可以制作"Lua函数“,...I只是希望我能调用框上的”标准“共享库。
如能提供帮助或建议,将不胜感激;)
谢谢
林顿
发布于 2010-11-12 06:31:25
Lua不能立即调用C库。它不随libffi一起发布,因此不像ctype那样工作。
历史上,lua嵌入到一个应用程序中,该应用程序将向lua表添加所需的函数,并提供lua堆栈操作以传递和返回参数。
外星人是一种利布菲的适应,并将工作。
https://stackoverflow.com/questions/4162161
复制相似问题