linux下C调用lua的第一个程序
来源:互联网 发布:会计上岗证网络课程 编辑:程序博客网 时间:2024/05/01 12:50
linux的环境是Fedora 18,运行在VM workstation中,以开发模式安装,自带了lua 5.1.4,可以在命令行上直接用lua命令进入到lua环境中。
写第一个lua程序,C语言程序
//add.c#include <stdio.h>#include "lua.h"#include "lualib.h"#include "lauxlib.h"/*the lua interpreter*/lua_State* L;intluaadd(int x, int y){ int sum;/*the function name*/ lua_getglobal(L,"add");/*the first argument*/ lua_pushnumber(L, x);/*the second argument*/ lua_pushnumber(L, y);/*call the function with 2 arguments, return 1 result.*/ lua_call(L, 2, 1);/*get the result.*/ sum = (int)lua_tonumber(L, -1);/*cleanup the return*/ lua_pop(L,1); return sum;}intmain(int argc, char *argv[]){ int sum;/*initialize Lua*/ L = lua_open();/*load Lua base libraries*/ luaL_openlibs(L);/*load the script*/ luaL_dofile(L, "add.lua");/*call the add function*/ sum = luaadd(10, 15);/*print the result*/ printf("The sum is %d \n",sum);/*cleanup Lua*/ lua_close(L); return 0;}
lua的代码:
function add(x,y) return x + yend
使用GCC编译,告找不到文件lua.h!
参考博文http://blog.csdn.net/emili/article/details/6005713需要手动安装lua
1、lua5.1.4需要使用readline,下载文件readline-6.2.tar.gz,使用命令:tar -zxvf readline-6.1.tar.gz 解包。
2、进入目录,生成make文件:./configure ,编译: make,安装: make install
3、原文说还需要ncurses,因为以前这个包装过,所以这次没有。
4、下载并解包文件lua-5.1.4.tar.gz:tar -xzvf lua-5.1.4.tar.gz
5、进入目录lua-5.1.4,编译:make linux,安装:make install
成功后将lua和lua.h文件都安装好了,但lua的安装位置和以前fedora自带的位置是不一样的,这次安装在了/usr/local/bin下了,不过不影响使用。
然后再次编译,试过不需要那么复杂的命令,实际上只需要:gcc -lm add.c -o add /usr/local/lib/liblua.a -ldl
还是给个全的命令吧:gcc -I/usr/local/include/ -L/usr/local/lib/ -lm add.c -o add /usr/local/lib/liblua.a -ldl
参考文献:1、http://blog.csdn.net/emili/article/details/6005713
- linux下C调用lua的第一个程序
- 第一个linux下的C程序
- linux下的第一个c程序
- linux 环境下的第一个C/C++ 程序
- Linux下的第一个c程序~_~
- 第一个c++调用Lua程序
- Lua和C交互的第一个程序
- Linux下编译的第一个程序
- 第一个Lua程序
- LUA第一个程序
- 第一个LUA程序
- 第一个 Linux c 程序
- 第一个C程序内嵌汇编(Linux下)
- Linux下编写第一个c语言程序hello world
- linux c程序调用lua代码的实例
- Linux下Lua调用c函数
- linux下Lua调用C函数
- 我的第一个Linux下的JNI程序
- [一个星期自学安卓]抽屉SlidingDrawer
- OCP-1Z0-053-200题-163题-132
- [一个星期自学安卓]进度条ProgressBar
- 第18天 Android Touch事件学习 5 点击与长按原理
- 0400000051
- linux下C调用lua的第一个程序
- 简析 addToBackStack使用和Fragment执行流程
- 0400000052
- 0400000053
- 什么是手机APP?
- 0400000054
- 如何从servlet中获取客户端ip并转换ip为long值
- 0400000055
- OCP-1Z0-053-200题-162题-113