国产探花免费观看_亚洲丰满少妇自慰呻吟_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))
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高邮市| 上蔡县| 芜湖市| 仙居县| 肥西县| 武穴市| 南川市| 昔阳县| 凭祥市| 雷山县| 和龙市| 巩留县| 冀州市| 社旗县| 原阳县| 泗洪县| 迭部县| 天门市| 交口县| 栖霞市| 宕昌县| 新蔡县| 盐亭县| 乌拉特前旗| 铜鼓县| 博客| 林口县| 察隅县| 武威市| 灌南县| 天台县| 巴林左旗| 宁都县| 姜堰市| 焉耆| 周宁县| 福海县| 新和县| 浑源县| 南通市| 泰和县|