在云风的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代码里, 而且比较自由, 可以加'.'

最新文章

  1. Java中普通代码块,构造代码块,静态代码块区别及代码示例
  2. 前端模板之EasyUI常用控件及参数
  3. [C++基础]关于对象的创建及内存分配
  4. hdu3308 线段树 区间合并
  5. Http响应code
  6. LINUX系统怎么关闭防火墙?
  7. JSP基础学习(一)
  8. java selenium webdriver实战 seleniumIDE
  9. hdu1217Arbitrage--解题报告
  10. hibernate里的generator中class =value介绍
  11. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名
  12. @Autowired和@Resource的区别是什么?
  13. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
  14. Java for Android 学习第一周
  15. 初识Hibernate框架,进行简单的增删改查操作
  16. Why Lua?
  17. 高仿QQ、微信效果的图片浏览器(支持原图和缩略图、多种手势、CocoaPods)
  18. mysql 判断字符串是否有某个字符
  19. nodejs学习笔记<七> 路由
  20. js中 xpath 使用

热门文章

  1. word20161222
  2. [mark] Linux下如何批量删除空文件
  3. CSS3中的px,em,rem,vh,vw辨析
  4. 48. 二叉树两结点的最低共同父结点(3种变种情况)[Get lowest common ancestor of binary tree]
  5. 适配各种Windows分辨率,为DPI添加感知,当在高DPI时,禁用WINFORM缩放等。
  6. Mosquitto搭建Android推送服务(二)Mosquitto简介及搭建
  7. Redis的入门及注意事项
  8. 自定义类似MessageBox小窗体操作
  9. "传成老树白茶"献礼母亲节 邀市民品茗感受茶文化
  10. Clang与libc++abi库安装