美文网首页
lua和C相互调用

lua和C相互调用

作者: DayDayUpppppp | 来源:发表于2022-07-10 11:00 被阅读0次

lua可以通过与C函数相互调用来扩展程序功能,在C中嵌入lua脚本既可以让用户在不重新编译代码的情况下修改lua代码更新程序,也可以给用户提供一个自由定制的接口,这种方法遵循了机制与策略分离的原则。在lua中调用C函数可以提高程序的运行效率。lua与C的相互调用在工程中相当实用。

lua和c之间的相互是通过一个抽象的栈来进行交互的。



1. lua和c相互调用的api:

todo


2. 应用

这种lua和c相互调用的方式,可以实现一下很方便的功能。把lua脚本作为功能插件,配置化的植入到cpp的程序中。比如在游戏中,使用某个道具可以给角色加经验,可以把addexp(100)这段lua代码作为配置,当使用道具的时候,就通过cpp调用这段lua去执行。 >完整实例代码

int exec_buff(ACTOR * actor)
{
    lua_State* L = luaL_newstate();
    luaL_openlibs(L);

    // 将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码
    // 在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。
    lua_register(L, "addexp", addexp);

    lua_env_set(actor);

    // 在注册完所有的C函数之后,即可在Lua的代码块中使用这些已经注册的C函数了。
    if (luaL_dostring(L, actor->lua_str.c_str()))
    {
        printf("Failed to invoke.\n");
    }

    lua_env_unset();
    lua_close(L);
    printf("actor exec lua buff end \n");
    return 0;
}

int main()
{
    ACTOR * actor = new ACTOR();
    actor->lua_str = "addexp(100)";
    actor->exp = 5;
    actor->id = 10000;

    exec_buff(actor);
    return 0;
}

// g++  -g -I${dependencies_include_path}/lua-5.1.4/src -L ${dependencies_lib_path} -llua -Wl,-rpath=${dependencies_lib_path} 5.cpp -o test5

参考:
https://www.cnblogs.com/coderkian/p/4057750.html
https://juejin.cn/post/6995343033977798670

相关文章

  • 对Lua ,C,C#互相调用的理解

    几种情况讨论 C调用Lua C调用C# C#调用C C#调用Lua Lua调用C Lua调用C# Lua调用C 本...

  • lua和c的初始

    lua和c的交互包括:c访问lua的变量、c访问lua的table、c调用lua的方法、lua调用c的函数 参考链...

  • lua和C相互调用

    lua可以通过与C函数相互调用来扩展程序功能,在C中嵌入lua脚本既可以让用户在不重新编译代码的情况下修改lua代...

  • c++和lua相互调用

    lua语言的功能就不用过多的描述,详细的可以去找相关的lua书籍去看看!这里主要说的是c++和lua相互调用的情况...

  • C++调用lua方式

    目标 使用C++调用lua接口 示例 lua代码(test.lua) C++调用示例(lua_test.cpp) ...

  • 面试小结(二) lua与C#的交互及一些注意事项

    简单的来说,lua调用C#的过程是lua-C-C#。C#调用lua的过程是C#-C-lua。 注意事项: 2.lu...

  • Lua C API

    C API 云风Blog:Lua C API 的正确用法 C读取和调用Lua文件的库:lua.h, lauxlib...

  • Lua api(一)

    前言# 最近看了一下Lua与C++的交互,发现只是写lua而不了解lua与C++相互调用的过程,确实是一件苦恼的事...

  • Object-C 和 lua的相互调用

    本文主要讲如何完成lua和object-c的相互调用。 lua是一种脚本语言,可以方便的移植到各种宿主语言中...

  • Lua与C相互调用

    Lua调用C engine->getLuaStack(); tolua_open(L); tolua_module...

网友评论

      本文标题:lua和C相互调用

      本文链接:https://www.haomeiwen.com/subject/ssdwbrtx.html