lua 调用C接口的3中常用方法
-
lua + alien 方式
适用于所有lua官方版本,但是lua官方安装包或源码中,并未附带alien模块。
alien模块官方版本貌似只支持lua5.1。 对于5.2~5.4版本的lua,需下载alien模块的源码(或许还需要稍微改动一些内容),自己编译相应的alien_c.so文件。优点:可以适配所有lua版本,可以使用新版lua的新特性。
缺点:alien模块缺乏维护,对lua新版本的支持,需自己进行调试编译。 -
luajit + ffi 方式
luajit的特点是运行时速度比原生lua快,且与lua5.1语法基本一致。
luajit的ffi模块,是luajit自带的功能。优点:luajit自带ffi模块,无需安装第三方模块。
缺点:luajit从语法的角度看,目前只与lua5,1兼容。lua5.2以上版本的特性(如位操作),无法支持。 -
lua + C扩展lua模块方式
自己写lua的C扩展模块,然后在lua脚本中调用自己写的扩展模块。优点:可以在扩展模块中调用任意复杂的C接口(因为是由C间接调用)。
缺点:需要维护2套源码(即:扩展模块的C源码,调用扩展模块的lua脚本);同时扩展模块的编写,在不同版本的lua中还有少许差别。