c和lua之间互相调用方法

来源:互联网 发布:数据分析方法论 编辑:程序博客网 时间:2024/05/18 08:25

本文基于cocos2dx lua开发,

调用之前lua的环境已经弄好。

那么第一个是lua调用c


先是注册:

lua_register(LuaEngine::getInstance()->getLuaStack()->getLuaState(), "luaTest",  luaTest);

其实是用了lua_pushfunction()这个东西,把现有的c函数压到lua中,上面那句是在cocos2dx里面才有的,记得你的头文件什么的

#include "CCLuaEngine.h"


然后在lua脚本中你就可以这么调用了 luaTest(10, 20, 30)

注意的是注册的第一个参数类型是:lua_State*,第二个是你想在lua中调用的名,第三个是现有的c方法名


第二个是c调用lua:


如果说你有这么个lua文件:


function luafunc(a, b, c)

--to do

end


那么你在c中第一个也是应该要把这个lua文件中的方法加到lua的全局变量中,怎么加?运行一下这个文件就可以了

用:lua_dofile(lua_State* L, char* fileName);

完了之后你就可以调用了

lua_getglobal(L, "luafunc");//lua方法被选择了

lua_pushnumber(L, 55);--传第一个参数
lua_pushnumber(L, 56);--传第二个参数
lua_pushnumber(L, 57);--传第三个参数
lua_call(L, 3, 0);--调用,这里第二个参数是传进参数的个数,第三个参数指的是lua方法返回值的个数


好了,就是这么多了


0 0
原创粉丝点击