一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Lua - Linux下編寫Lua擴展so文件和調(diào)用方法實例

Linux下編寫Lua擴展so文件和調(diào)用方法實例

2020-04-30 11:32腳本之家 Lua

這篇文章主要介紹了Linux下編寫Lua擴展so文件和調(diào)用方法實例,本文給出C語言代碼、編譯SO文件、Lua中調(diào)用代碼實例,需要的朋友可以參考下

復(fù)制代碼 代碼如下:


#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 函數(shù)的前置聲明   */
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結(jié)尾 */
};


 int luaopen_mylib(lua_State *L)
{
  luaI_openlib(L, "mylib", mylib, 0);
return 1;
}

 

如果是.cpp文件,在luaopen_mylib一定要加 extern "C", 否則導(dǎo)出的函數(shù)會被重命名,切記切記

編譯:gcc mylibs.c -fPIC -shared -o libmylib.so -llua

復(fù)制代碼 代碼如下:

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調(diào)用腳本:

復(fù)制代碼 代碼如下:

local one, two, three = package.loadlib("libmylib.so", "luaopen_mylib")()
print(mylib.lsin(10))

延伸 · 閱讀

精彩推薦
  • LuaLua中計算、執(zhí)行字符串中Lua代碼的方法

    Lua中計算、執(zhí)行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執(zhí)行字符串中Lua代碼的方法,類似JavaScript中eval函數(shù)的功能,在Lua中也可以實現(xiàn),需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • Lua深入探究Lua中的解析表達式

    深入探究Lua中的解析表達式

    這篇文章主要介紹了深入探究Lua中的解析表達式,對于其語法部分的說明和示例都超詳細,極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua中table庫函數(shù)方法介紹

    Lua中table庫函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個table賦值等內(nèi)容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結(jié)合代碼實例詳細講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • LuaLua實現(xiàn)__add方法重載示例

    Lua實現(xiàn)__add方法重載示例

    這篇文章主要介紹了Lua實現(xiàn)__add方法重載示例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內(nèi)容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • LuaLua教程(二):基礎(chǔ)知識、類型與值介紹

    Lua教程(二):基礎(chǔ)知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎(chǔ)知識、類型與值介紹,本文講解了Hello World程序、代碼規(guī)范、全局變量、類型與值等內(nèi)容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
主站蜘蛛池模板: 精品日韩欧美一区二区三区 | 麻豆小视频在线观看 | free chinese麻豆 | 青草久久伊人 | 果冻传媒林予曦图片 | 2020年精品国产午夜福利在线 | 男人把大ji巴放进男人免费视频 | 亚洲红怡院 | 99av麻豆| 北岛玲在线视频 | 男人日女人的逼视频 | 97啪啪| 交欧美| 国色天香社区在线视频免费观看 | 男人肌肌捅女人肌肌 | 免费一级日本c片完整版 | 外国a级片 | 欧美一二 | 日本高清中文字幕 | 亚洲乱码一区二区三区国产精品 | 久久精品一卡二卡三卡四卡视频版 | 挺进白嫩老师下面视频 | 免费高清www动漫视频播放器 | 日韩欧美综合在线二区三区 | 国产麻豆麻豆 | 放荡的女老板bd中文字幕 | 99视频福利 | 五月天黄网 | 久久草福利自拍视频在线观看 | 亚洲 欧美 偷自乱 图片 | caoporn人人| 四虎影院观看 | 三级黄色图片 | 久久精品热在线观看30 | 四虎影院永久网站 | 国产免费视| 国产精品久久久久久影视 | 动漫美女羞羞 | 日本人妖视频 | 麻豆在线md0087免费 | 人禽l交视频在线播放 视频 |