源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-08-04 14:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Linux下编写Lua扩展so文件和调用方法实例
[u]复制代码[/u] 代码如下:
#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
[u]复制代码[/u] 代码如下:
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调用脚本:
[u]复制代码[/u] 代码如下:
local one, two, three = package.loadlib("libmylib.so", "luaopen_mylib")() print(mylib.lsin(10))
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部