文档章节

lua与C++的交互

水水鱼
 水水鱼
发布于 2015/02/27 11:28
字数 362
阅读 178
收藏 3

参考文档地址:

Lua 与C交互 

项目名字:SimFrame

项目语言:C++,lua(5.1)

项目框架:Cocos2d-x 2.2.3

一.创建项目

首先 cd到cocos2d-x包下的tools中的project-creator目录,输入

./create_project.py -project SimFrame -package com.zyl.test -language lua

projects目录下会有一个SimFrame的项目,打开SimFrame.xcodeproj(我用的是mac,xcode)

二.项目入口

找到Classes下面的AppDelegate.cpp文件

在 bool AppDelegate::applicationDidFinishLaunching()方法中有一句

std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("hello.lua");
pEngine->executeScriptFile(path.c_str());

这个就是运行hello.lua

三.lua调用C++的函数

在AppDelegate.cpp文件中 新加一个自己的测试方法,如下

static int mytest(lua_State *L)
{
    int n = lua_gettop(L);  //获取当前lua的堆栈中的参数个数
    printf("args nums is %i \n",n);
    //
    printf(" arg is %f \n" , lua_tonumber(L,2)); //打印当前堆栈中第二个参数,并且转换成number类型(float)
    //
    return NULL;
}

注册方法如下:(在运行lua之前初始化即可)

lua_State *tolua_s = pStack->getLuaState();
lua_register(tolua_s, "mytestf", mytest);//1.lua堆栈 2.lua中映射的方法名字 3.c++定义的方法

lua中调用(在hello.lua中function main()调用即可)

mytestf(1,99,3,4)

输出

args nums is 4 
 arg is 99.000000

这说明调用成功了,这里只是小试牛刀,上面有lua和c的交互的参考文档,大家可以详细的看看,此处不再写c++调用lua了。

后续会加上使用tolua++编译pkg,从而创建自定义类让Lua脚本使用(绑定c++的类)

© 著作权归作者所有

共有 人打赏支持
水水鱼
粉丝 8
博文 12
码字总数 7718
作品 0
海淀
私信 提问
FFLIB之FFLUA——C++嵌入Lua&扩展Lua利器

摘要: 在使用C++做服务器开发中,经常会使用到脚本技术,Lua是最优秀的嵌入式脚本之一。Lua的轻量、小巧、概念之简单,都使他变得越来越受欢迎。本人也使用过python做嵌入式脚本,二者各有特...

知然
2013/01/27
0
0
用LuaBridge为Lua绑定C/C++对象

最近为了总结Lua绑定C/C++对象的各种方法、第三方库和原理,学习了LuaBridge库为Lua绑定C/C++对象,下面是学习笔记,实质是对该库的Reference Manual基本上翻译了一遍,学习过程中测试代码,...

shezjl
2015/10/26
0
0
unreal4 引擎的 Lua 开发插件 - sluaunreal

sluaunreal 是腾讯开源的适用于 unreal4 引擎的 Lua 开发插件,可让开发者高效地使用 Lua 进行业务开发。sluaunreal 作为 unreal 引擎的插件,通过 unreal 自带蓝图接口的反射能力,结合 li...

匿名
08/04
0
0
腾讯开源 Lua 开发插件 sluaunreal,加速游戏业务开发

近日,腾讯开源了其用于游戏业务的 sluaunreal,该项目是适用于 unreal4 引擎的 Lua 开发插件,可让开发者高效地使用 Lua 进行业务开发。 项目地址:https://github.com/Tencent/sluaunreal...

h4cd
08/04
0
1
C/C++和Lua是如何进行通信的?

为了实现Lua和其他语言之间的通信,Lua虚拟机为C/C++提供了两个特性: 一,LuaState状态机 luaState主要是管理一个lua虚拟机的执行环境, 一个lua虚拟机可以有多个执行环境。Lua虚拟机通过维护...

borey
2014/09/17
0
10

没有更多内容

加载失败,请刷新页面

加载更多

Kubernetes里的secret最基本的用法

Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。 Secret可以以Volume或者环境变量的方式使用。 使用如下命令...

JerryWang_SAP
昨天
1
0
可重入锁和非可重入锁

广义上的可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提得是同一个对象或者class),这样的锁就叫做可重入锁。 可重入锁: ReentrantLoc...

狼王黄师傅
昨天
1
0
2018-11-20学习笔记

1. python数据类型: 给变量赋值什么样的值,变量就是什么样的类型 给变量赋值整数,变量就是整数类型 给变量赋值字符串,变量就是字符串类型 123 和“123”一样吗? 在python中 单引号 与双...

laoba
昨天
1
0
使用 React 和 Vue 创建相同的应用,他们有什么差异?

在工作中应用 Vue 之后,我对它有了相当深刻的理解。 不过,俗话说「外国的月亮比较圆」,我好奇「外国的」 React 是怎么样的。 我阅读了 React 文档并观看了一些教程视频,虽然它们很棒,但...

阿K1225
昨天
2
0
2天闭门培训|以太坊智能合约从入门到实战(北京)

2天培训 16个课时 探寻技术原理,精通以太坊智能合约开发 以太坊智能合约是现在应用的最广泛的区块链应用开发方式,HiBlock区块链社区针对以太坊智能合约的学习特别推出2天闭门研修班,通过2...

HiBlock
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部