lua - 使用luaL_register方法实现 lua调用c/c++(lua5.1及之前版本可用)

lua5.1之前可以使用luaL_register方法在c/c++中进行方法的批量注册。

直接整活。。。

Test_Tolua.cpp

// Test_Tolua.cpp

void Test_Tolua::init()
{
    const luaL_reg functions[] = {
        { "UserID", UserID },
        { "InitSDK", InitSDK },
        { NULL, NULL }
    };
    luaL_register(LuaEngine::getInstance()->getLuaStack()->getLuaState(), "Test", functions);
}

int Test_Tolua::UserID(lua_State* s)
{
    CCLOG("call function UserID success");
    return 1;
}

int Test_Tolua::InitSDK(lua_State* s)
{
    if (!lua_isfunction(s, 1)) {
        CCLOG("function InitSDK request, param 1 must be callback function");
        return 0;
    }
    funcInitID = toluafix_ref_function(s, 1, 0);
    CCLOG("call function initSDK success");
    return 0;
}

游戏运行,执行Test_Tolua::init()方法后,可直接在lua中调用

test.lua

-- test.lua
Test.UserID()
Test.InitSDK(function()
        print("test...")
    end)

 

你可能感兴趣的:(lua,lua调用c,luaL_register)