国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Linux下編寫Lua擴展so文件和調用方法實例

2024-07-21 23:04:47
字體:
來源:轉載
供稿:網友

 

復制代碼 代碼如下:

#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))
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 遂平县| 宜君县| 徐水县| 吉首市| 兴仁县| 乌恰县| 炉霍县| 钟祥市| 福海县| 百色市| 张家川| 枣阳市| 民权县| 永平县| 广平县| 溧水县| 天津市| 定南县| 遂昌县| 庆元县| 云安县| 海晏县| 汝南县| 凤翔县| 西安市| SHOW| 咸丰县| 紫云| 台州市| 方城县| 潮州市| 冕宁县| 宁乡县| 石首市| 河池市| 弥勒县| 邹平县| 西贡区| 岫岩| 南通市| 宁陵县|