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方法返回值的个数
好了,就是这么多了
调用之前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方法返回值的个数
好了,就是这么多了
相关文章推荐
- 设计模式实例(Lua)笔记之七(Decorator模式)
- 设计模式实例(Lua)笔记之六(Adapter模式)
- openresty + lua-resty-weedfs + weedfs + graphicsmagick动态生成缩略图(类似淘宝方案)
- luaplus和c++之间的代码交互
- Evaluating Simple C Expressions
- 设计模式实例(Lua)笔记之五(Bridge模式)
- [leetcode-150]Evaluate Reverse Polish Notation(c++)
- Programming in Lua读书笔记
- lua中关于字符串的操作总结
- lua 创建listview
- 设计模式实例(Lua)笔记之五(Prototype 模式)
- 设计模式实例(Lua)笔记之四(Builder 模式)
- 设计模式实例(Lua)笔记之三(Singleton单例模式)
- 【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】
- 【LeetCode-面试算法经典-Java实现】【150-Evaluate Reverse Polish Notation(计算逆波兰式)】
- 设计模式实例(Lua)笔记之二(AbstractFactory抽象工厂模式)
- 设计模式实例(Lua)笔记之一(Factory Method工厂方法模式)
- lua 可变参数
- tolua++的一些api的
- Lua闭包的理解