Linux下lua安装以及和c的交互
来源:互联网 发布:巨衫数据库待遇怎么样 编辑:程序博客网 时间:2024/04/27 23:13
lua安装,与c交互的过程记录
lua安装
在此我的机器环境是cenos 6.8 我安装的是lua5.1.4版本
- 安装lua编译的相关依赖
yum -y install readline-devel ncurses-devel
tar -zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
make linux test
make install
至此lua模块安装完成,开始和c语言的交互之旅行吧
网上很多介绍c和lua交互的,但是在linux下面的编译介绍却没找到,在此自己记录下,也方便大家查看
- 在lua模块安装完成后,可以用命令find / -name ‘lua.h’ 查看lua.h的位置,网上很多人是用–profix指定位置,在此我都是默认安装,发现默认其实已经是在/usr/local/bin 等系统目录下,没有其他配置,可直接使用,很方便。不需要像很多人说的那样多此一举,每次总是百度来百度去反而消磨很多精力。
1实现自己的第一个c调用C的例子
test.lua
print("lua script test.lua have been load--")function showinfo() print ("hello world")endfunction lua_add(a,b) return a+bendfunction lua2c_add(a,b) return add(a,b)end
test.c
#include <stdio.h>#include <lua.h>#include <lauxlib.h>#include <lualib.h>int main(int argc, char *argv[]){ lua_State *L = lua_open(); L = luaL_newstate(); luaL_openlibs(L); luaL_dofile(L, "test.lua"); lua_getglobal(L,"showinfo"); lua_pcall(L,0,0,0); lua_getglobal(L,"lua_add"); lua_pushinteger(L,1); lua_pushinteger(L,5); lua_pcall(L,2,1,0); printf("lua add function return val is %d \n",lua_tointeger(L,-1)); lua_close(L); return 0;}
- 编译命令 gcc test.c -o test -llua -lm -ldl
2实现自己的第一个lua调用C的例子
c_lua.c
#include<stdio.h>#include<lua.h>#include<lualib.h>#include<lauxlib.h>static int add(lua_State* L){ int a = lua_tointeger(L,1);//获取函数参数 int b = lua_tointeger(L,2); lua_pushinteger(L,a+b); return 1;}int main(){ lua_State *L = luaL_newstate(); //lua_State *L = Lua_open() luaL_openlibs(L); lua_register(L,"add",add);//注册add函数,多个函数可以使用luaL_register注册,该函数使用结构体的方式 luaL_dofile(L,"test.lua");//加载lua文件,建立lua所有变量(包括函数)的全局表 lua_getglobal(L,"lua2c_add");// 在lua的全局表查找lua2c_add函数,并压入栈底 lua_pushinteger(L,3);//push函数参数1 lua_pushinteger(L,4);//push 函数参数2 lua_pcall(L,2,1,0);//执行栈中的函数,2代表俩个参数,1代表一个返回值,0代表没有错误处理函数 int result = lua_tointeger(L,-1); //从栈中取回返回值 lua_pop(L,1); //清栈,此时只有一个返回值 printf("result = %d\n",result); lua_close(L);//关闭lua环境 return 0;}
- 编译命令 gcc c_lua.c -o app -llua -lm -ldl
Ok啦,经历好几天的迷雾,终于在linux跑起来了,还不太会写博客,就此小小记录下,也希望能带给一些和我一样有迷惑的朋友帮助
0 0
- Linux下lua安装以及和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- Mac下命令行安装指定版本的lua,然后c++,lua相互交互
- C和lua交互
- lua和C交互
- C/C++和Lua的交互
- Lua和C/C++的交互
- Lua和C语言的交互
- PowerShell文件系统(五)管理访问权限
- 禁止按钮在一定时间内连续点击
- hdu2639 Bone Collector II (01背包第k大解)
- CSS格式化排版
- 蓝桥 方格填数
- Linux下lua安装以及和c的交互
- caffe源码深入学习4:支持魔改的layer:layer.hpp与layer.cpp
- MFC学习小记(1) MFC的入口点与消息循环,消息映射
- BS CS
- 无向图 DST图的深度遍历 BST图的广度遍历
- 在react中如何使用tab组件-小白系列 es6
- jquery.validate.js表单验证
- mysql 锁机制
- python特性(七):通过生成器函数构造序列对象的迭代器