参考文档地址:
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++的类)
时间: 2024-10-04 02:06:07