lua动态链接库之单个so文件包含多个模块(luaL_requiref函数的使用)
lua dynamic library more module
在hive的hive.lua文件中,第一行就是local c = require “hive.core”。
根据上一篇文章所说的,它是调用的hive文件夹下的core.so文件。
然而在其他hive文件夹下的system.lua前两行是
local cell = require “cell”,local system = require “cell.system”,
但没有看到这两个so文件。
这个是怎么回事呢?查看src下的hive_*_lib.c都含有luaL_Reg这样类似于hive.c中的用法。
然后找到hive.start()函数对应的scheduler_start(),看到了和cell.system相关的一行代码luaL_requiref(sL, “cell.system”, cell_system_lib, 0);
接着去网上搜了下luaL_requiref()函数的作用,找到了lua源代码的实现,作用就是调用cell_system_lib然后把该模块绑定到cell.system模块名字下。
下面我就实现了一个so库包含两个模块。
lua动态链接库就到这里了,接下来会继续阅读hive代码
欢迎转载,转载请注明作者及出处oldblog.hanxi.info,请勿用于商业用途
本文地址:http://oldblog.hanxi.info/2014/01/07/original-lua_dynamic_lib_more