Lua和C++交互 学习记录之六:全局函数交互

时间:2021-11-22 08:57:02

主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍)

部分内容查阅自:《Lua 5.3  参考手册》中文版 译者 云风 制作 Kavcc

vs2013+lua-5.3.3

1.C++调用Lua中函数

①Lua中的函数

 function add(x,y)
return x + y
end

②C++调用函数

     //lua->stack,全局函数位置-1
lua_getglobal(L, "add"); //c->stack,传入函数参数
lua_pushinteger(L, );
lua_pushinteger(L, ); //lua->stack,调用函数,2表示传入2个参数,1表示一个返回值,并将返回值放到-1的位置
lua_call(L, , ); //stack->c
printf("add function return value : %d\n", lua_tointeger(L, -));

2.Lua调用C++中的函数

①Lua能调用的C++函数必须符合如下函数签名:

typedef int (*lua_CFunction) (lua_State *L);

在函数里面将相应的数据进行栈操作;

返回值表示入栈供Lua使用的返回值个数。

②C++中函数

函数里的栈都是函数自己私有的,当函数返回时该栈会被自动清空。

 int average(lua_State* L){
//lua->stack,得到Lua调用函数输入的个数
int lua_args_count = lua_gettop(L); //lua->c,得到所有Lua中输入参数的值
lua_Number sum = ;
for (int i = ; i <= lua_args_count; ++i){
sum += lua_tonumber(L, i);
} //c->stack,将平均值和总值返回到Lua中的返回值
lua_pushnumber(L, sum / lua_args_count);
lua_pushnumber(L, sum); //返回个数给Lua
return ;
}

③注册C++的函数到Lua中

 lua_register(L, "average", average);

 ////lua_register宏替代了下面两个函数
//lua_pushcfunction(L, average);
//lua_setglobal(L, "average");

④Lua中进行调用C++中的函数

 local ave,sum = average(,,)
print("ave : ",ave," sum : ",sum)

Lua和C++交互系列:

Lua和C++交互 学习记录之一:C++嵌入脚本

Lua和C++交互 学习记录之二:栈操作

Lua和C++交互 学习记录之三:全局值交互

Lua和C++交互 学习记录之四:全局table交互

Lua和C++交互 学习记录之五:全局数组交互

Lua和C++交互 学习记录之六:全局函数交互

Lua和C++交互 学习记录之七:C++全局函数注册为Lua模块

Lua和C++交互 学习记录之八:C++类注册为Lua模块

Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类

Lua和C++交互 学习记录之六:全局函数交互的更多相关文章

  1. Lua和C&plus;&plus;交互 学习记录之七:C&plus;&plus;全局函数注册为Lua模块

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  2. Lua和C&plus;&plus;交互 学习记录之五:全局数组交互

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  3. Lua和C&plus;&plus;交互 学习记录之四:全局table交互

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  4. Lua和C&plus;&plus;交互 学习记录之三:全局值交互

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  5. Lua和C&plus;&plus;交互 学习记录之九:在Lua中以面向对象的方式使用C&plus;&plus;注册的类

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 在 ...

  6. Lua和C&plus;&plus;交互 学习记录之八:C&plus;&plus;类注册为Lua模块

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  7. Lua和C&plus;&plus;交互 学习记录之二:栈操作

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  8. Lua和C&plus;&plus;交互 学习记录之一:C&plus;&plus;嵌入脚本

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  9. C&plus;&plus;学习27 用全局函数重载运算符

    运算符重载函数既可以声明为类的成员函数,也可以声明为所有类之外的全局函数. 运算符重载函数作为类的成员函数 将运算符重载函数声明为类的成员函数时,二元运算符的参数只有一个,一元运算符不需要参数.之所以 ...

随机推荐

  1. mono for android学习过程系列教程&lpar;1&rpar;

    直接进入主题,关于mono for android的学习,首先配置好环境,如何配置环境,度娘谷歌一大堆,记得使用破解版. 我自己是百度“黑马四期”传智播客的视频,里面有破解版开发环境的软件. 今天直接 ...

  2. Alljoyn之管中窥豹

    Alljoyn之管中窥豹 一.历史: Alljoyn是高通2011年推出的近距离P2P通讯技术,它为分布式应用程序在不同设备中提供了运行环境,特别是移动性.安全性和动态配置,支持Microsoft W ...

  3. 在Visual Studio中使用正则表达式匹配换行和批量替换

    系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...

  4. Android成长日记-使用Intent实现页面跳转

    Intent:可以理解为信使(意图),由Intent来协助完成Android各个组件之间的通讯 Intent实现页面之间的跳转 1->startActivity(intent) 2->st ...

  5. 记录一次linux线上服务器被黑事件

    1.原因:本来在家正常休息了,我们放在上海托管机房的线上服务器突然蹦了远程不了,服务启动不了,然后让上海机房重启了一次,还是直接挂了,一直到我远程上才行. 2.现象:远程服务器发现出现这类信息 Hi, ...

  6. 面试题 php随机获取概率结果

    题目:随机输出“苹果”,“橘子”,“香蕉”要求输出“苹果”的概率为50%,“橘子”的概率为30%,“香蕉”的概率为20% 分析 方案一: 最常用rand(1,10)来处理 如果是5以下的输出苹果 6到 ...

  7. &lbrack;转&rsqb; doxygen使用总结

    doxygen [功能] 为许多种语言编写的程序生成文档的工具. [举例] *生成一个模板配置文件,模板文件中有详细的注释: $doxgen -g test 这样,会生成一个test文件,1500多行 ...

  8. 【Selenium】Selenium IDE(alt&plus;ctrl&plus;s)

    ttp://www.yiibai.com/selenium/selenium_ide_tool_features.html     学习 Selenium IDE安装 http://seleniumh ...

  9. 【vue】vue &plus;element 搭建项目,el-input 常用的验证

    1.el-input 常用布局 <el-input class="filter-item dialog-search" size="small" @key ...

  10. SaltStack 入门到精通第二篇:Salt-master配置文件详解

    SaltStack 入门到精通第二篇:Salt-master配置文件详解     转自(coocla):http://blog.coocla.org/301.html 原本想要重新翻译salt-mas ...