这个帖子是介绍如何使用原生lua的API完成在c/c++中调用lua函数.
并非是cocos2dx封装的接口.不过,cocos2dx引擎的底层也是用的这些接口写的.
我们在CCLuaStack.cpp中可以看到代码如下:
#include "CCLuaStack.h"
#include "tolua_fix.h"
extern "C" {
#include "lua.h"
#include "tolua++.h"
#include "lualib.h"
#include "lauxlib.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_QT ||CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
#include "lua_extensions.h"
#endif
}
我们在写代码的时候也可以直接调用下文的lua_open luaL_openlibs luaL_dofile lua_getglobal lua_pushinteger lua_pushinteger lua_call lua_pop lua_close等api.这个帖子很简洁,明了,很适合第一次做C++调用lua的朋友学习.
后续我会写一篇通过cocos2dx二次封装后的接口实现c++中调用lua函数的文章!搞cocos2dx的童鞋欢迎关注!
闲话少说,奉上由<Alex Zhou>撰写的优质文章 <<在c/c++中调用lua函数>>
_______________________________
以下是转载原文内容:
原文链接:
首先完成lua代码,创建sum.lua:
1
2
3
|
function
add(x, y)
return
x + y;
end
|
为了在c中调用lua中的add函数,首先需要把函数压入堆栈,然后把函数的参数压入堆栈,然后执行函数,最后从栈中获取函数返回值。先看看下面的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
|