LuaIntf 4年前

人工智能
467
LuaIntf

LuaInft   https://github.com/SteveKChiu/lua-intf

ReadME .MD https://github.com/SteveKChiu/lua-intf/blob/master/README.md

一些基础信息,作者在github上面描述很清楚

这个lib 提供了cpp和lua交互 解决方案

1.运行执行lua文件 函数

lua_State *l = luaL_newstate();
    luaL_openlibs(l);

    LuaIntf:: LuaContext ctx(l);
    ctx.doFile("1.lua");

    LuaIntf::LuaRef func(l, "func");
    func(1000);

2.导出class 

#include "LuaIntf/LuaIntf.h"

using namespace LuaIntf;

class Test
{
public:
    void Print()
    {
        cout << __FUNCTION__ << this->GetValue() << endl;
    }

    void SetValue(int v) { this->_value = v; }//setter

    int GetValue() { return this->_value; };//getter

    Test(string s) {}
    Test(void) {}
private:
    int _value = 0; // inner value
};

int main(int argc, char *argv[])
{
    lua_State *l = luaL_newstate();
    luaL_openlibs(l);

    LuaIntf::LuaBinding(l).beginClass<Test>("Test")
        .addConstructor(LUA_ARGS(_opt<std::string>))
        .addConstructor(LUA_ARGS())
        .addFunction("Print", &Test::Print)
        .addProperty("v", &Test::GetValue, &Test::SetValue) // 绑定getter 和setter,lua变量名为v
        .endClass();

    try
    {
        LuaIntf::LuaContext ctx(l);
        ctx.doFile("1.lua");

        LuaIntf::LuaRef func(l, "func");
        func(1000);
    }

    catch (LuaException  e)
    {
        cout << e.what();
    }
    _CrtDumpMemoryLeaks();
    system("pause");
    return 0;
}


lua代码

print("567856");


  function func(x)
    print(x);
end




local xxx= Test();
 xxx:Print();
 xxx.v=3;
 xxx:Print();

3.注册模块

比上面的代码多了:


    LuaIntf::LuaBinding(l).beginModule("cpp") /// cpp 模块名字
        .addFunction("log", &log1)
        .addFunction("FUNCNAME", [=] 
    {
        log1(__FUNCTION__);
    })
        .endModule();


lua代码


cpp.log("haha");
cpp.FUNCNAME();
k
kirakio
仁不行商、义不守财;情不立威,善不居官;慈不掌兵,柔不监国。
4
发布数
3
关注者
1719
累计阅读

热门教程文档

Python
76小节
CSS
33小节
Spring Boot
24小节
Kotlin
68小节
10.x
88小节
广告