Lua与C相互调用

Lua调用C

engine->getLuaStack();

tolua_open(L);

tolua_module(L, NULL, 0);

tolua_beginmodule(L, NULL);

tolua_function(L, "changeScene", lua_cocos2dx_changeScene);

tolua_endmodule(L);

定义C函数

static int lua_cocos2dx_changeScene(lua_State * L) {

blablablabla...

}

C调用Lua

LuaEngine * engine = LuaEngine::getInstance();

ScriptEngineManager::getInstance()->setScriptEngine(engine);

engine->executeScriptFile("lua/hello.lua");

使用Cocos创建Lua工程

#include "CCLuaEngine.h"

#include "lua_module_register.h"

bool AppDelegate::applicationDidFinishLaunching()

{

auto engine = LuaEngine::getInstance();

ScriptEngineManager::getInstance()->setScriptEngine(engine);

lua_State* L = engine->getLuaStack()->getLuaState();

lua_module_register(L);

// If you want to use Quick-Cocos2d-X, please uncomment below code

// register_all_quick_manual(L);

if (engine->executeScriptFile("src/main.lua")) {

return false;

}

return true;

}

在Cocos C++工程中,可使用一些Lua插件,也可以使用Lua.h中的API运行Lua模块。

在Cocos Lua工程中,均以配置好。

你可能感兴趣的:(Lua与C相互调用)