Lua学习笔记6:C++和Lua的相互调用
//main.cpp
#include <iostream>extern "C"
{
#include "lualib/lua.h"
#include "lualib/lualib.h"
#include "lualib/lauxlib.h"
}using namespace std;int main()
{lua_State* L = luaL_newstate() ;luaopen_base(L) ;// 不知道为什么这里使用luaL_openlibs(L)会报错luaL_dofile(L, "script/test.lua") ;lua_getglobal(L, "add") ;lua_pushnumber(L, 1) ;lua_pushnumber(L, 2) ;lua_pcall(L, 2, 1, 0) ;int sum = (int)lua_tonumber(L, -1) ;lua_pop(L, -1) ;lua_close(L) ;cout << "1 + 2 = " << sum << endl;return 0 ;
}
function add(x, y)return x + y
end
编译命令:
g++ main.cpp -L./lualib -llua
实际上就C++通过Lua脚本调用自己的函数。
cocos2dx中那些个Lua接口,调用的都是C++中定义的函数。
// main.cpp
#include <iostream>extern "C"
{
#include "lualib/lua.h"
#include "lualib/lualib.h"
#include "lualib/lauxlib.h"
}using namespace std;lua_State* L ;static int average(lua_State *L)
{// num of argsint n = lua_gettop(L) ;double sum = 0 ;int i = 0 ;for ( i = 1; i <= n; ++i){sum += lua_tonumber(L, i) ;}// push the averagelua_pushnumber(L, sum / n) ;// push the sumlua_pushnumber(L, sum) ; return 2;
}int main()
{L = luaL_newstate() ;luaopen_base(L) ;// register functionlua_register(L, "average", average) ;luaL_dofile(L, "test.lua") ;lua_close(L) ;return 0 ;
}
avg, sum = average(1, 2, 3, 4, 5)
print ("The average is ", avg)
print ("The sum is ", sum)
先就到这里了。假设有错误还请路过的大神指点一二。
Lua学习笔记6:C++和Lua的相互调用相关推荐
- Lua 学习笔记(一)
Lua学习笔记 1.lua的优势 a.可扩张性 b.简单 c.高效率 d.和平台无关 2.注释 a.单行注释 -- b.多行注释 --[[ --]] 3.类型和 ...
- 微信小程序连接物联网(二):NodeMCU Lua学习笔记
索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...
- lua 学习笔记---游戏开发第一步
lua 学习笔记-从数组开始 数组 数组大小范围不一定需要在声明是确定,可以改变 一维数组 例 > array = {"Lua", "lualu"} &g ...
- c# 学习笔记 (2) 窗体之间互相调用的方法
c# 学习笔记 (2) 窗体之间互相调用的方法 创建一个winform工程 创建两个窗体 一个子窗体,一个父窗体,这里为了演示,子窗体和父窗体上都有一个文本框和按键,点击任意一个窗体上的按键,窗体上文 ...
- Windows保护模式学习笔记(三)—— 长调用/短调用/调用门
Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时: 总 ...
- Java web与web gis学习笔记(二)——百度地图API调用
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- Qml学习笔记:cpp与qml的交互调用方式
Qml学习笔记:cpp与qml的交互调用方式 如何用在cpp中调用qml的方法 main.qml main.cpp 如何在qml中调用C++的方法函数 main.cpp main.qml 如何使用qm ...
- Lua学习笔记(2)
前段时间忙于其他事,没有继续Lua的学习,现在继续我们的Lua学习吧. 首先先推荐一本书<Programming in Lua>中文版名称<Lua编程>,这本书从最基础的部分开 ...
- Lua 学习笔记(一)环境搭建
Lua是一个小巧的脚本语言.Lua由标准C编写而成,代码简洁,几乎在所有的操作系统和平台上都可以编译,运行. 主要讲一下mac和win下的环境搭建. 工具: 1.Sublime Text 2 2.Lu ...
最新文章
- 悠然乱弹:我的开源观
- TensorFlow基础5-可训练变量和自动求导机制
- HDU 1166 敌兵布阵【树状数组】
- 鸟哥的Linux私房菜(服务器)- 主机基本安全之一:限制 Linux 对外连线的端口
- Cell重磅综述:关于人类转录因子,你想知道的都在这
- 数据库之SqlDataAdapter
- 在layoutsubviews中设置子控件的frame,保证执行alpha和frame动画流畅度
- mel加载一个物体不同姿态的模型实现动画效果
- 一个简单的实现了智能虚拟女友—图灵机器人
- ApacheCN 翻译活动进度公告 2019.3.3
- 计算机网站之TCP报文结构
- 使用机器学习预测股价
- 明日之后 找不到服务器,明日之后服务器不一样怎么办_区服不同如何解决_软吧...
- xxxxxxxxxxxxxxxxx
- 常用照片尺寸和纸张尺寸参考
- java科技说明文范文800_说明文范文:生活因成功而精彩
- Cannot Resolve method subscribe(anonymous org.reactivestreams.Subscriber 已解决
- C语言中Strcpy 的使用
- printf打印字符串的时候可以printf(“%s“,buf);buf可以是字符串名或者指针
- 谈谈Spring Ioc的理解
热门文章
- Java线上程序频繁JVM FGC问题排障与启示
- Java中的ClassLoader和SPI机制
- Varnish Cache 3.0.0安装
- SQL Server 存储过程的分页方案比拼
- Linux下gdb调试工具的使用
- java写exe程序实例,java实现可安装的exe程序实例详解
- workbench应力应变曲线_说说真应力真应变
- bscroll 滚动位置_better-scroll初始滚动位置
- 所有表单对象_Laravel 表单方法伪造与 CSRF 攻击防护
- android usb 触摸屏 apk,Android插入USB设备,自动弹出提示运行apk