Linux下編寫Lua擴(kuò)展so文件和調(diào)用方法實(shí)例
#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
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)用腳本:
local one, two, three = package.loadlib("libmylib.so", "luaopen_mylib")()
print(mylib.lsin(10))
- Python下調(diào)用Linux的Shell命令的方法
- 利用Golang如何調(diào)用Linux命令詳解
- Linux makefile 和shell文件相互調(diào)用實(shí)例詳解
- 淺談在linux kernel中打印函數(shù)調(diào)用的堆棧的方法
- 詳解Linux驅(qū)動中,probe函數(shù)何時被調(diào)用
- 三種方法實(shí)現(xiàn)Linux系統(tǒng)調(diào)用
- 舉例講解Linux系統(tǒng)下Python調(diào)用系統(tǒng)Shell的方法
- Python在Windows和在Linux下調(diào)用動態(tài)鏈接庫的教程
- Linux下使用python調(diào)用top命令獲得CPU利用率
- Java調(diào)用linux shell腳本的方法
- 詳解linux系統(tǒng)調(diào)用原理
相關(guān)文章
lua讀取redis數(shù)據(jù)的null判斷示例代碼
最近在工作中遇到了一個問題,通過查找相關(guān)資料才得知原因是因?yàn)榉祷亟Y(jié)果的問題,下面這篇文章主要給大家介紹了關(guān)于lua讀取redis數(shù)據(jù)的null判斷的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09Lua基礎(chǔ)教程之賦值語句、表達(dá)式、流程控制、函數(shù)學(xué)習(xí)筆記
這篇文章主要介紹了Lua基礎(chǔ)教程之賦值語句、表達(dá)式、流程控制、函數(shù)學(xué)習(xí)筆記,本文來自個人總結(jié),需要的朋友可以參考下2014-09-09Lua編程示例(三):稀疏表、雙端隊(duì)列、格式化輸出、表和循環(huán)表的格式化輸出
這篇文章主要介紹了Lua編程示例(三):稀疏表、雙端隊(duì)列、格式化輸出、表和循環(huán)表的格式化輸出,本文直接給出實(shí)例代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-07-07Lua中實(shí)現(xiàn)面向?qū)ο蟮囊环N漂亮解決方案
這篇文章主要介紹了Lua中實(shí)現(xiàn)面向?qū)ο蟮囊环N漂亮解決方案,本文給出實(shí)現(xiàn)代碼、使用方法及代碼分析,需要的朋友可以參考下2015-01-01Mac平臺中編譯安裝Lua運(yùn)行環(huán)境及Hello Lua實(shí)例
這篇文章主要介紹了Mac平臺中編譯安裝Lua運(yùn)行環(huán)境及Hello Lua實(shí)例,本文給出了兩種Hello Lua示例,一種是控制臺直接輸出,通過文件編譯輸出,需要的朋友可以參考下2014-10-10