lua 调用 c++的最简单例子+lua咋调用C
发布日期:2021-06-29 18:53:02
浏览次数:2
分类:技术文章
本文共 2004 字,大约阅读时间需要 6 分钟。
文章目录
lua 调用 c++的最简单例子
-
原来啊,要 luaL_openlibs(L);这个哦!!
-
A.cpp
#includeextern "C" { #include "lua.h"#include "lualib.h"#include "lauxlib.h"}/* 指向lua解释器的指针 */lua_State* L;static int average(lua_State *L){ /* 得到参数的个数 */ int n = lua_gettop(L); double sum = 0; int i; /* 循环遍历参数 */ for (i = 1; i <= n; i++) { /* 所有参数求和 */ sum += lua_tonumber(L, i); } /* 压入平均值 */ lua_pushnumber(L, sum / n); /* 压入和 */ lua_pushnumber(L, sum); /* 返回返回值的个数 */ return 2;}int main ( int argc, char *argv[] ){ /* 初始化Lua */ L = luaL_newstate(); /* 载入Lua基本库 */ luaL_openlibs(L); /* 注册自定义函数 */ lua_register(L, "average", average); /* 执行avg.lua文件 */ luaL_dofile(L, "avg.lua"); /* 关闭Lua */ lua_close(L); /* 暂停 */ printf( "Press enter to exit..." ); getchar(); return 0;}
- avg.lua写东西
print(average(12,23))
- 然后g++ -I /home/ztz123/Desktop/lua-5.4.0/src -L /home/ztz123/Desktop/lua-5.4.0/src A.cpp -llua -ldl
- 然后就好啦。
- 特码的,可是我这个lua脚本还是需要现在C++里面干点活(如注册),然后让这个脚本跑就好了。
canci
lua咋调用C
- 前面讲C与Lua交互的原理,讲到了Lua调用C的接口时,
- 需要C将函数通过注册机制注册到当前lua_State全局变量,
- 实例具体介绍怎么注册并调用到C的函数接口。
1 实现实际操作的C函数
static int add(int a, int b){ return a+b;}static int sub(int a, int b){ return a - b;}static int mul(int a, int b){ return a * b;}
2 实现Lua与C的数据转换函数
static int lua_add_api(lua_State *L){ //至少要有两个参数 if ((!lua_isinteger(L, 1)) || (!lua_isinteger(L, 2))) return 0; int a = lua_tointeger(L, 1); int b = lua_tointeger(L, 2); int ret = add(a, b); lua_pushnumber(L, ret); return 1;}static int lua_sub_api(lua_State *L){ if ((!lua_isinteger(L, 1)) || (!lua_isinteger(L, 2))) return 0; int a = lua_tointeger(L, 1); int b = lua_tointeger(L, 2); int ret = sub(a, b); lua_pushnumber(L, ret); return 1;}static int lua_mul_api(lua_State *L){ //至少要有两个参数 if ((!lua_isinteger(L, 1)) || (!lua_isinteger(L, 2))) return 0; int a = lua_tointeger(L, 1); int b = lua_tointeger(L, 2); int ret = mul(a, b); lua_pushnumber(L, ret); return 1;}
canci
转载地址:https://cyj666.blog.csdn.net/article/details/108253888 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月25日 17时48分42秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VScode自动生成项目目录文件结构的方法
2019-04-30
如何避免CSS :before、:after 中文乱码
2019-04-30
观察者模式
2019-04-30
1024. 视频拼接
2019-04-30
北漂码农的现状
2019-04-30
前端技巧必备:重置样式表reset.css
2019-04-30
css技巧--给选中的tab加下划线
2019-04-30
css技巧---位置中间的竖线|垂直居中
2019-04-30
css技巧---电子表体字体引入
2019-04-30
随笔---如何启动Redis
2019-04-30
css技巧---menu菜单加new
2019-04-30
freemarker模板当标签内的元素为空报错解决方案
2019-04-30
如何解决中文乱码问题
2019-04-30
关于如何彻底卸载SQL SERVER2005 2008
2019-04-30
前端技巧:如何让一个div 在另一个div上面显示,却不会影响下一个div的位置?
2019-04-30
前端技巧:echarts中国地图外边框设置阴影投影效果------荧光效果 随笔
2019-04-30
随笔:简单的蒙版加载页面实现
2019-04-30