您的位置:首页 > 编程语言 > Lua

c和lua之间互相调用方法

2015-08-21 17:54 573 查看
本文基于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方法返回值的个数

好了,就是这么多了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: