Linux下編寫(xiě)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"
/* 庫(kù) 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ù)會(huì)被重命名,切記切記
編譯: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ū)動(dòng)中,probe函數(shù)何時(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)用動(dòng)態(tài)鏈接庫(kù)的教程
- Linux下使用python調(diào)用top命令獲得CPU利用率
- Java調(diào)用linux shell腳本的方法
- 詳解linux系統(tǒng)調(diào)用原理
相關(guān)文章
分析Lua觀察者模式最佳實(shí)踐之構(gòu)建事件分發(fā)系統(tǒng)
當(dāng)對(duì)象間存在一對(duì)多關(guān)系時(shí),則使用觀察者模式(Observer Pattern)。比如,當(dāng)一個(gè)對(duì)象被修改時(shí),則會(huì)自動(dòng)通知依賴(lài)它的對(duì)象。觀察者模式屬于行為型模式2021-06-06
Lua腳本語(yǔ)言基本語(yǔ)法快速入門(mén)教程
這篇文章主要介紹了Lua腳本語(yǔ)言基本語(yǔ)法快速入門(mén)教程,本文是一個(gè)簡(jiǎn)易教程,快速的羅列了常用語(yǔ)法,有一定編程語(yǔ)言基礎(chǔ)的同學(xué)更容易看芯片,需要的朋友可以參考下2015-07-07

