首页
学习
活动
专区
圈层
工具
发布

lua 和c的调用

当执行到require “dylib.test”时,lua解析器会去dylib/test.so文件中寻找并执行函数名为luaopen_dylib_test的函数。.../dylib/test.so: undefined symbol: luaopen_dylib_test stack traceback: [C]: in ?...对于一个Lua文件来说,我们可以很轻易的改掉它的名称,但是对于一个C程序库来说,我们是没有办法编辑其中的luaopen_函数的名称的。...为了这种重命名的需求,require用到了一个小的技巧:如果一个模块名中包含了连字符,require就会用连字符后的内容来创建luaopen_*函数名。...比如:如果一个模块的名称为a-b,require就会认为它的open函数名为luaopen_b,并不是luaopen_a-b。现在好了,对于上面提出的不同版本进行测试的需求,就可以迎刃而解了。

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Lua与C语言接口编程实战指南:打造高性能、灵活的程序

    lua只识别以luaopen开头的函数。5.1、原理c语言编写模块,编译成动态库。lua加载c语言的动态库:.so,.dll,.dylib。约定读取动态库中以luaopen_*命名的函数。...static const luaL_Reg l[] = {// 导出给lua使用数组 {"echo", lecho}, {NULL, NULL}, }; (3)c语言实现一个luaopen开头的函数...int luaopen_tbl_c(lua_State *L) { // local tbl = require "tbl.c" // 创建一张新的表,并预分配足够保存下数组 l 内容的空间...5.3、从lua角度看调用过程(1)lua首先会进行动态库的导入,即local so=require "table.c"(2)Lua就会去查找动态库中以luaopen_*开头的函数,*就是展开了的c文件名...,比如展开为luaopen_table_c的函数名。

    35210

    【IOS开发高级系列】Lua与OC交互专题

    交互原理 用Lua编写iOS程序 http://blog.csdn.net/justinjing0612/article/details/8816678 IOS中如何调用LUA,以及LUA如何调用IOS中的功能...这种转换功能强大,甚至可以处理复杂的Objective-C特性,比如选择器。         你可以利用所有上述特性。不需要精挑细选。你获得所有特性!...NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];           wax_start("AppDelegate.lua", luaopen_wax_http..., luaopen_wax_json, luaopen_wax_filesystem, nil);       int retVal = UIApplicationMain(argc, argv, nil...但是Lua可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。事实上,现在已经有很多成熟的扩展模块可供选用。

    1K20

    功能分离与功能降级

    “高可用性”是架构设计中的重点目标,功能的分离与降级就是保证高可用性的常用方案 功能分离的思路是区分开 核心业务、非核心业务,让核心业务尽量不受非核心业务影响 功能降级的思路是在访问量过大使系统资源不足...,或者出现问题时,优先保证核心业务,把非核心业务直接降级 功能分离 逻辑分离 例如用户登录、注册、交易是核心功能,是网站整体业务流程必须的,核心功能有问题后,用户就不能正常使用了 例如发送通知...、日志处理就是非核心功能,虽然很重要,但不是必须的业务流程 非核心功能可能会频繁修改升级,必须保证非核心功能不影响核心功能,就需要在逻辑上把他们区分开,尽可能做成独立的功能模块,降低耦合,在需要功能配合时...,通过接口进行沟通 物理分离 逻辑上隔离后,最好在物理资源层面也隔离开,如应用服务器、数据库、缓存等 假设共享了缓存服务器,就可能会由于非核心功能的操作影响了缓存的性能,甚至出现问题 物理隔离后...,就更加保证了核心功能的安全 功能降级 例如一个页面有很多动态的内容,是后面大量的服务计算出来的,在访问高峰,动态页面扛不住时,可以降级为准备好的静态页面,虽然没动态的页面好,但保证了可用性

    2.1K50
    领券