首页 > 其他 > 详细

lua调用c函数

时间:2015-04-01 19:04:04      阅读:351      评论:0      收藏:0      [点我收藏+]

参考:http://blog.163.com/madahah@126/blog/static/170499225201121504936823/

1、编辑C程序

 vim luac.c

#include <stdio.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>

LUALIB_API int luaopen_mylib(lua_State *L );

//自定义函数
static int my_add(lua_State *L) 
{
    int x = lua_tonumber(L,1); //第一个参数,转换为数字
    int y = lua_tonumber(L,2); //第二个参数,转换为数字
    int sum = x + y;
    lua_pushnumber(L, sum);
    return 1; //返回sum计算结果
}

static int showstr(lua_State *L) 
{
   //从lua中传入的第一个参数
   const char *str = lua_tostring (L, 1); 

   printf ("c program str = %s\n", str);
   return 0;
}

//函数列表
static struct luaL_reg funclist[] =
{
    {"add", my_add}, //my_add()函数,lua中访问时使用名称为add
    {"show", showstr}, //showstr()函数,lua中访问时使用名称为show
    {NULL, NULL}  //最后必须有这个
};

//注册函数列表方便扩展
//我们编译后的动态库名称为mylib.so
LUALIB_API int luaopen_mylib(lua_State *L )
{
    luaL_register(L, "mylibfunc", funclist); //lua中使用mylibfunc.add访问my_add函数
    return 1;
}

#if 0
//直接注册一个函数
LUALIB_API int luaopen_mylib(lua_State *L )
{
    lua_register(L, "add", my_add);
    return 1;
}
#endif

2、编辑lua程序

require "mylib"
local sum = mylibfunc.add(3,9)
print("sum=",sum)
local str = mylibfunc.show("haha")

3、编译C程序为动态库

gcc luac.c -shared -fPIC -o mylib.so -I /usr/local/lj2/include/luajit-2.0/

4、运行测试lua调用C程序

lua t.lua
输出如下:
sum= 12
c program str = haha

lua调用c函数

原文:http://www.cnblogs.com/etangyushan/p/4384368.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!