C/C++语言调用lua函数和编译问题

本文记录了在Ubuntu 16.04环境下使用C/C++调用lua 5.2时遇到的问题及解决过程,包括lua API版本不兼容、安装缺失和连接库文件的步骤。在遇到错误时,通过查看报错提示、总结经验和参考他人解决方案成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x00环境和吐槽

环境:

lua安装版本:lua 5.2

lua安装系统:ubuntu 16.04

吐槽:

网上找到代码开始进行测试C/C++ linux环境下调用lua脚本,各种错。网上给出的也是粘贴复制,没有对自己的问题进行剖析。神烦!!!!


0x01开始进行排错

1.1 lua API版本不兼容

reacher@ubuntu:~/luafunc$ g++ -o add main.cpp -I /usr/include/lua5.2/
main.cpp: In function ‘int main(int, char**)’:
main.cpp:24:18: error: ‘lua_open’ was not declared in this scope
     L = lua_open();    
                  ^

错误剖析:一直以为是路径问题,造成没有引用。后来多个网友贴出来的错误,发现是5.2已经弃lua_open()。


1.2 安装缺失

readline-devel:sudo apt-get install libreadline-dev  

ncurses-devel: sudo apt-get install libncurses5-dev

错误剖析:将缺失的依赖安装上


1.3 连接到库文件

reacher@ubuntu:~/luafunc$ g++ -o add main.cpp -I /usr/include/lua5.2/
/tmp/ccYbXBqi.o: In function `main':
main.cpp:(.text+0x10): undefined reference to `luaL_newstate'
main.cpp:(.text+0x20): undefined reference to `luaL_openlibs'
main.cpp:(.text+0x36): undefined reference to `luaL_loadfilex'
main.cpp:(.text+0x61): undefined reference to `lua_pcallk'
main.cpp:(.text+0x70): undefined reference to `lua_close'
collect2: error: ld returned 1 exit status


g++  -o add main.cpp -I /usr/include/lua5.2/ -llua5.2



0x02吐槽

工作用工头搭建好的环境就是爽,自己来搭建各种坑和各种迷失。所以做程序员这个行当还是要多动手和练习。

解决问题的思路:

1.先看报错提示,根据报错提示进行查找解决方案。

2.多总结,不要只停留在错误提示上。

3.结合网友在这个问题上的解决思路,看一下异同,在反看自己的错误


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值