• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

lua调用c函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

参考: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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
http://www.runoob.com/lua/lua-basic-syntax.html发布时间:2022-07-22
下一篇:
lua快速入门发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap