Linux下编写Lua扩展so文件和调用方法实例

 更新时间:2015年05月05日 09:12:22   投稿:junjie  
这篇文章主要介绍了Linux下编写Lua扩展so文件和调用方法实例,本文给出C语言代码、编译SO文件、Lua中调用代码实例,需要的朋友可以参考下

复制代码 代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
#include <string.h>
 
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <limits.h>
 


#include <math.h>
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"


/*  库 open 函数的前置声明   */
int luaopen_mylib(lua_State *L);


static int l_sin (lua_State *L)
{
double d = luaL_checknumber(L, 1);
lua_pushnumber(L, sin(d));
//printf("ok now is  luahook!\n");
return 1; /* number of results */
}


static const luaL_Reg mylib[] =
{
{"lsin", l_sin},
{NULL, NULL} /* 必须以NULL结尾 */
};


 int luaopen_mylib(lua_State *L)
{
  luaI_openlib(L, "mylib", mylib, 0);
return 1;
}

如果是.cpp文件,在luaopen_mylib一定要加 extern "C", 否则导出的函数会被重命名,切记切记

编译:gcc mylibs.c -fPIC -shared -o libmylib.so -llua

复制代码 代码如下:

Makefile文件
CXX =gcc
LIBNAME:=libmylib.so
HDRNAME:=mylibs.c
TARGETNAME:=mylibs
CNAME:=$(patsubst %,%.c,$(TARGETNAME))
ONAME:=$(patsubst %,%.o,$(TARGETNAME))
all:libmylib
libmylib: $(ONAME)
$(CXX) -g -shared -Wl,$(LIBNAME) \
-o $(LIBNAME) $(ONAME) -llua
%.o: %.c
$(CXX) -fPIC -c -Wall $(CNAME)clean:$(RM) *.o *.so

lua调用脚本:
复制代码 代码如下:

local one, two, three = package.loadlib("libmylib.so", "luaopen_mylib")()
print(mylib.lsin(10))

相关文章

  • 简单的Lua 连接操作mysql数据库的方法

    简单的Lua 连接操作mysql数据库的方法

    lua连接数据库不只luasql这个库,但目前更新最快的的貌似是这个luasql,他是开源的,下面我们就来看看如何来具体操作吧
    2015-10-10
  • Lua基础迭代器的使用实例

    Lua基础迭代器的使用实例

    今天小编就为大家分享一篇关于Lua基础迭代器的使用实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Lua教程(二十二):userdata

    Lua教程(二十二):userdata

    这篇文章主要介绍了Lua教程(二十二):userdata,这里我们通过一个简单完整的示例来学习一下Lua中userdata的使用方式,需要的朋友可以参考下
    2015-04-04
  • Lua中的函数浅析

    Lua中的函数浅析

    这篇文章主要介绍了Lua中的函数,包括函数声明、函数参数、多重返回值、变长参数、具名实参、闭包函数等内容,需要的朋友可以参考下
    2014-09-09
  • Lua中if语句嵌套的使用教程

    Lua中if语句嵌套的使用教程

    这篇文章主要介绍了Lua中if语句嵌套的使用教程,是Lua入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • LUA string库使用小结

    LUA string库使用小结

    这篇文章主要介绍了LUA string库使用小结,本文总结了简单的模式串、格式化的模式串、模式串中的特殊字符、用'[]'创建字符集、在'[]'中使用连字符'-'等内容,需要的朋友可以参考下
    2014-12-12
  • 详解Lua中的元表概念

    详解Lua中的元表概念

    这篇文章主要介绍了详解Lua中的元表,是Lua入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • 使用Lua编写Web端模板引擎的实例代码分享

    使用Lua编写Web端模板引擎的实例代码分享

    这里我们给出一个使用Lua编写Web端模板引擎的实例代码分享,力求简洁(核心代码约为70行),仅实现最基本的模板功能:
    2016-06-06
  • 举例讲解Lua中的Table数据结构

    举例讲解Lua中的Table数据结构

    这篇文章主要介绍了举例讲解Lua中的Table数据结构,说明都融入到了注释中,需要的朋友可以参考下
    2015-07-07
  • lua文件操作详解

    lua文件操作详解

    Lua中关于文件处理操作是本文要介绍的内容,主要是来了解并学习lua中文件的相关操作,具体内容的实现来看本文详解。
    2016-03-03

最新评论