欢迎来到山村网

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

2019-03-02 12:20:51浏览:777 来源:山村网   
核心摘要:  这篇文章主要介绍了Linux下编写Lua扩展so文件和调用方法实例,本文给出C语言代码、编译SO文件、Lua中调用代码实例,需要的朋友

  这篇文章主要介绍了Linux下编写Lua扩展so文件和调用方法实例,本文给出C语言代码、编译SO文件、Lua中调用代码实例,需要的朋友可以参考下

   代码如下:

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include "lua.h"

  #include "lualib.h"

  #include "lauxlib.h"

  

  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;

  }

  static const luaL_Reg mylib[] =

  {

  {"lsin", l_sin},

  {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中遍历文件操作代码实例

上一篇:

Lua5.1中加载dll动态链接库的方法

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com