gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Linux下编写Lua扩展so文件和调用方法实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

复制代码 代码如下:

#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))

最后此篇关于Linux下编写Lua扩展so文件和调用方法实例的文章就讲到这里了,如果你想了解更多关于Linux下编写Lua扩展so文件和调用方法实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com