• lua的C库


    在云风的ejoy2d里是没有dll和so之类的东西的, 所有的C扩展都是类似这样写的:
    int
    ejoy2d_shader(lua_State *L) {
         luaL_Reg l[] = {
              {"load", lload},
              {"unload", lunload},
              {"draw", ldraw},
              {"blend", lblend},
              {"version", lversion},
              {NULL,NULL},
         };
         luaL_newlib(L,l);
         return 1;
    }
    调用的时候需要先在C程序里:
    luaL_requiref(L, "ejoy2d.shader.c", ejoy2d_shader, 0);
    这样就相当于把ejoy2d_shader里注册的函数都绑定到ejoy2d.shader.c这个模块上了.
     
    在lua里要调用的时候, 形式与一般C库的调用一样:
    local s = require "ejoy2d.shader.c"
     
    这是在网上找的一个关于这种写法的说明, 中文的.

    我觉得这样的C库写法也有其好处:
    1. 不需要导出为dll或so
    2. 初始化函数名可以不为 luaopen_*
    3. 库名的定义直接写在c代码里, 而且比较自由, 可以加'.'
  • 相关阅读:
    final finally finalize区别
    final 有什么用
    Java基础(一) 八大基本数据类型
    22
    21
    20
    18
    17
    16
    15
  • 原文地址:https://www.cnblogs.com/chaoswong/p/3727142.html
Copyright © 2020-2023  润新知