博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua与C++的交互
阅读量:5838 次
发布时间:2019-06-18

本文共 1155 字,大约阅读时间需要 3 分钟。

hot3.png

参考文档地址:

项目名字: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++的类)

转载于:https://my.oschina.net/zhyuliang/blog/380346

你可能感兴趣的文章
react-native Realm的使用
查看>>
算法-两数相加
查看>>
使用chrome performance 查看页面性能
查看>>
OpenCV3编程入门学习一架构分析
查看>>
安装docker和docker-compose
查看>>
分布式事务中间件 Fescar—RM 模块源码解读
查看>>
MYSQL中视图的使用
查看>>
四种方法实现──三栏布局(圣杯布局、双飞翼布局)
查看>>
函数&作用域提升
查看>>
第十三天-企业应用架构模式-对象-关系元数据映射模式
查看>>
资深程序员的书单 - 转载自@Axb
查看>>
Laravel核心解读--异常处理
查看>>
待实践的解决方案---微信浏览器里粘贴功能不好使
查看>>
spring cloud gateway (5)其他
查看>>
【译】 WebSocket 协议第七章——关闭连接(Closing the Connection)
查看>>
以太坊中的账户、交易、Gas和区块Gas Limit等概念
查看>>
记住这35个英文单词,你就可以在RPA界混了!
查看>>
前嗅ForeSpider数据建表和高级配置界面介绍
查看>>
「前端面试题系列7」Javascript 中的事件机制(从原生到框架)
查看>>
RxJS 实现摩斯密码(Morse) 【内附脑图】
查看>>