• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Linux下编写Lua扩展so文件和调用方法实例

Linux下编写Lua扩展so文件和调用方法实例

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了linux lua,linux 安装lua,lua for linux,lua实例,lua脚本实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

#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;
}
</div>

如果是.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
</div>
lua调用脚本:
local one, two, three = package.loadlib("libmylib.so", "luaopen_mylib")()
print(mylib.lsin(10))
</div>

</div>

您可能想查找下面的文章:

  • Linux下编写Lua扩展so文件和调用方法实例

相关文章

  • C++中调用Lua函数实例
  • Linux下编写Lua扩展so文件和调用方法实例
  • 举例讲解Lua中的Table数据结构
  • Lua编程示例(八):生产者-消费者问题
  • Lua中的基本语法、控制语句总结
  • Lua中使用模块的一些基础知识
  • Lua中table里内嵌table的例子
  • Lua中全局变量与非全局环境介绍
  • lua脚本语言快速入门教程
  • Lua入门学习笔记

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua中table的一些辅助函数介绍
    • Lua中实现StringBuffer功能
    • Lua多重继承代码实例
    • Lua获取文件长度和判断文件是否存在函数分享
    • Lua教程(七):数据结构详解
    • Lua教程(十五):输入输出库(I/O库)
    • Lua中遍历文件操作代码实例
    • Lua脚本语言简介
    • Lua中的操作符和表达式总结
    • Lua实现__add方法重载示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有