Lua 是巴西研究小组开发的一个灵活小巧的脚本语言,整个编译后的静态库才400多K,便于嵌入应用程序中,扩展程序功能。常用于游戏开发中,nginx的openresty项目也让lua更加流行。
Lua语法与python比较类似,支持自动垃圾回收,面向对象编程。
一. 扩展lua接口
lua没有提供sleep()和msleep()实现,我们可以提供动态库给lua调用,代码如下:
#include <unistd.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" // sleep实现 static int sleep_c( lua_State *l ) { long sec = lua_tointeger( l, -1 ); sleep( sec ); return 0; } // msleep实现 static int msleep_c( lua_State *l ) { long sec = lua_tointeger( l, -1 ); usleep( sec*1000 ); return 0; } // 声明模块函数集合 static const struct luaL_Reg libs[] = { { "sleep", sleep_c }, { "msleep", msleep_c }, { NULL, NULL } }; // 注册函数 int luaopen_myutil( lua_State *l ) { luaL_register( l, "myutil", libs ); // 库名称与luaopen_xxx一致 return 1; }
编译:liblua.a 需添加-fPIC选项,否则上述库会编译出错。
gcc -fPIC -shared -o myutil.so sleep.c -I. -I/usr/local/include -L/usr/local/lib -llua
lua调用:
require "myutil" local start = os.time() print( "Start: ", start ) myutil.sleep(2) local mid = os.time() print( "End: "..mid )
动态库路径:将myutil.so库放在下面任意目录,均可正常执行:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > print(package.cpath) ./?.so;/usr/lib64/lua/5.1/?.so;/usr/lib64/lua/5.1/loadall.so
参考链接:
http://www.troubleshooters.com/codecorn/lua/lua_lua_calls_c.htm#_Make_an_msleep_Function
相关推荐
这个压缩包“lua扩展支持库静态版luashellfne”可能包含了用于扩展Lua功能的静态库文件,方便开发者将其集成到自己的项目中,而无需关心动态链接库的依赖问题。 在Lua扩展中,我们可以讨论以下几个关键知识点: 1....
本文将深入探讨“C#-lua接口”的相关知识点,包括接口的实现原理、使用方法以及优势。 首先,C#是Microsoft .NET框架下的主要编程语言,它具有类型安全、面向对象和跨平台的特性。而Lua则是一种轻量级的脚本语言,...
在C或C++中调用Lua函数通常...综上所述,"C/C++中调用Lua函数的接口封装"旨在提供一个便捷的桥梁,使C/C++开发者能够更高效、安全地利用Lua的脚本能力。通过良好的封装设计,可以极大地提高开发效率和代码的可维护性。
在易语言中集成Lua,可以利用Lua的灵活性和高效性来扩展易语言的功能。 这个压缩包文件包含了一些用于在易语言中调用Lua的资源和示例程序,让我们一一解析: 1. **Lua.lib**:这是一个易语言的库文件,它提供了与...
《lua扩展库V1.51》是针对lua编程语言的一个功能丰富的库集合,它为lua程序员提供了更多元化的操作工具,特别是在硬件控制和数据处理方面。以下将详细阐述其中的一些核心库及其功能: 1. **bit库**: - `bit`库是...
lua扩展库V1.6,作为一款集成了多种功能模块的库,极大地丰富了Lua语言的应用场景和功能。在接下来的内容中,我将详细介绍标题和描述中提到的各项知识点。 ### 标题知识点解析 #### Lua扩展库V1.6 Lua扩展库V1.6...
LuaOO是在lua原有的API基础之上扩展而来,极少地修改lua源码,主要是通过扩展lua原来的代码。扩展lua与C++环境交互。因此当有新版本的lua源码发布时也能够支持。LuaOO的很多接口的命名与lua API类似。LuaOO隐藏了lua...
4. **扩展性**:结合IIS的ISAPI接口,可以轻松扩展服务器功能。 然而,也有需要注意的方面: 1. **安全性**:使用脚本语言可能会增加安全风险,需要确保Lua代码的安全性,防止恶意攻击。 2. **调试与监控**:相比C/...
总的来说,Lua-cURL是一个强大且灵活的工具,它扩展了Lua在Web开发中的能力,使得编写网络相关的脚本变得简单高效。无论你是处理简单的HTTP请求还是构建复杂的网络应用,Lua-cURL都是一个值得信赖的库。
OpenResty+Lua+Redis 高性能后端接口 OpenResty 是基于 Nginx 的高性能 web 服务器,它使用 Lua 语言作为脚本语言来实现动态内容生成和处理。 Lua 是一种轻量级的脚本语言,广泛应用于游戏、嵌入式系统和 web 开发...
Luanet是基于Lua的C++扩展实现的,它通过tolua++工具生成.NET与Lua的绑定代码。在运行时,Luanet通过托管代码(Managed Code)与非托管代码(Unmanaged Code)的交互,利用.NET的互操作性(Interop)特性,实现在Lua...
5. **实现通信接口**:为了让Lua能够控制硬件资源,如GPIO、定时器和串口,需要编写C语言的扩展模块,提供与硬件交互的接口。这些接口可以作为Lua的全局函数,供Lua脚本调用。 6. **调试与测试**:通过串口或其他...
在实际开发中,你可能需要根据需求来组织和扩展这个接口,例如封装成易于使用的类,或者提供更高级别的抽象方法,使得生成 PDF 文件的过程更加简洁和直观。同时,要注意处理错误和异常,确保生成过程的健壮性。 ...
LUA脚本支持库则是为了扩展LUA的功能,提供更多的API和工具,使得开发者能够更高效、更方便地编写LUA代码。本文将深入探讨LUA脚本支持库的相关知识点。 1. LUA基础 LUA的核心特点是简洁和高效,它拥有简单的语法...
LuaOO是在lua原有的API基础之上扩展而来,极少地修改lua源码,主要是通过扩展lua原来的代码。扩展lua与C++环境交互。因此当有新版本的lua源码发布时也能够支持。LuaOO的很多接口的命名与lua API类似。LuaOO隐藏了lua...
总的来说,【lua for vb.net】为VB.NET开发者提供了一个强大且易于使用的Lua接口,使得他们能够利用Lua的灵活性和效率,提升应用程序的功能和用户体验。通过深入理解和熟练运用这个库,开发者可以构建出更加动态和可...
OpenWrt UCI详解 1. uci 简介 ...通过C语言和Lua的接口,用户可以根据需要动态地读取和更新配置,确保OpenWrt设备的灵活性和可扩展性。理解并熟练掌握UCI的使用对于开发和维护OpenWrt系统至关重要。
在Lua中,调用C++函数通常需要通过全局环境中的一个表(table)来完成,这个表是C++导出给Lua的接口。例如,你可能会看到类似以下的Lua代码: ```lua local cplusplus = require("cpp_module") -- 加载C++模块 ...
在实际编程中,你可能还会用到Lua的C接口,通过这个接口,可以将C/C++代码与Lua脚本进行交互,实现性能敏感部分的优化或者扩展Lua的功能。LuaJIT是一个流行的Just-In-Time编译器,它可以显著提升Lua代码的执行速度。...