欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Lua调用自定义C模块

程序员文章站 2022-03-07 10:43:12
这是《lua程序设计》中提到的,但是想成功执行,对于初学lua的确没那么简单。这里涉及如何如何生成一个动态链接库so文件;lua5.2中导出函数从lual_register...

这是《lua程序设计》中提到的,但是想成功执行,对于初学lua的确没那么简单。这里涉及如何如何生成一个动态链接库so文件;lua5.2中导出函数从lual_register变成了lual_newlib。对于具体的细节有待深入。这里的模块名是hello_lib, lua解释器会根据名字找到对应的模块,而后执行其中的 luaopen_xxx方法。 代码:

在lua中调用:

执行过程和结果: 

Lua调用自定义C模块

1. c函数作为应用程序的一部分。

2. c函数库成为lua的模块。

    将包含c函数的代码生成库文件,如linux的so,或windows的dll,同时拷贝到lua代码所在的当前目录,或者是lua_cpath环境变量所指向的目录,以便于lua解析器可以正确定位到他们。在我当前的windows系统中,我将其copy到"c:\program files\lua\5.1\clibs\",这里包含了所有lua可调用的c库。见如下c语言代码和关键性注释:

    见如下lua代码:

require "mytestlib"  --指定包名称

--在调用时,必须是package.function