码迷,mamicode.com
首页 > 编程语言 > 详细

lua与C++的交互

时间:2015-02-27 13:47:52      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

参考文档地址:

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++的类)

lua与C++的交互

标签:

原文地址:http://my.oschina.net/zhyuliang/blog/380346

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!