lua调用C函数
来源:互联网 发布:python classmethod 编辑:程序博客网 时间:2024/05/21 16:57
本文调用的是lua-5.3.0。本文是在借鉴这篇文章的基础上编写的,由于原文章采用的是lua-5.2以下的版本,但是lua-5.2的版本进行了很大的改动,导致之前的很多函数不能再使用。本文就解决了采用lua-5.3.0中的API函数之后,原文章中代码存在的一些问题。
这里只讲原文章中提到的第二种方法C函数库成为Lua的模块,以实现Lua调用C函数,另外一种方法可以参考原文章。
C函数库成为Lua的模块其实就是将包含C函数的代码生成库文件,如Linux的so。将其放至相应目录,以便于Lua解析器可以正确定位到它们。下面以代码进行解释。
以下是test.c的代码:
在test.c中去掉了源代码中的extern “C”,如若不去掉会报错:/usr/local/include/lua.hpp:5:8: error: expected identifier or ‘(’ before string constant extern "C"
以下是test.lua的代码:
在原文章的test.lua代码中没有定义变量mylib,是直接requier("mytestlib"),再用mytestlib.add去调用函数C中的函数add。反正我用原代码运行的时候会报错,在网上找了很久这个问题,最终改为了现在的代码。原文章代码的报错信息为:lua: test.lua:4: attempt to index a nil value (global 'mytestlib')
至此代码编写部分就这些,这里再记录一下这段代码的编译链接过程,使可以看到代码的运行结果,以证明代码的正确性。
将test.c编译成.o文件:gcc -c -fPIC -o test.o test.c
将test.o编译成.so文件:gcc -shared -o mytestlib.so test.o
运行test.lua代码:lua test.lua
编译链接之后文件夹中的文件如下图所示:
阅读全文
0 0
- [lua]C调用lua函数
- Lua调用C函数
- lua 调用c函数
- Lua调用C函数
- lua调用c函数
- Lua调用C函数
- lua调用C函数
- lua调用C函数
- lua调用C函数
- Lua调用C函数
- lua调用c函数
- lua调用C函数
- lua调用C函数
- Lua调用C函数
- lua 调用c函数
- Lua调用C函数
- Lua调用C函数
- lua调用C函数
- SMTP协议分析
- [js高手之路]设计模式系列课程-设计一个模块化扩展功能(define)和使用(use)库
- 九度 题目1438:最小公倍数
- 9.6
- Android中js与本地方法进行相互调用
- lua调用C函数
- 批处理重命名特殊文件名-shell
- 回调机制
- 4、重识MySQL-MySQL命令之编码处理
- linux常用命令
- (2)基于Echarts插件的多维数据可视化设计和实现
- 安全体系(二)——RSA算法详解
- Codeforces 851 B Arpa and an exam about geometry
- HDU 6095 Rikka with Competition(水~)