lua调c动态库

 

Lua脚本调c动态库函数时开始调不成功,通过Lua官方的Mail List才知道:c动态库里的注册函数和Lua脚本的打开库的方式要一致。

1.

c动态库的代码:

static int lua_msgbox(lua_State* L)

{

    const char* message = luaL_checkstring(L, 1);

    const char* caption = luaL_optstring(L, 2, "");

    int result = MessageBox(NULL, message, caption, MB_YESNO);

    lua_pushnumber(L, result);

    return 1;

}

int __declspec(dllexport) luaopen_dllforlua(lua_State* L)

{

    lua_register(L, "msgbox",  lua_msgbox); //使用lua_register注册函数 

    return 1;

}

使用lua_register函数,则Lua脚本应该写成:

dllforlua = package.loadlib("dllforlua.dll", "luaopen_dllforlua")

dllforlua()

msgbox("Hey, it worked!", "Lua Message Box")

 

2.

static int lua_msgbox(lua_State* L)

{

    const char* message = luaL_checkstring(L, 1);

    const char* caption = luaL_optstring(L, 2, "");

    int result = MessageBox(NULL, message, caption, MB_YESNO);

    lua_pushnumber(L, result);

    return 1;

}

static const  luaL_Reg mylib[] =

{

    {"msgbox", lua_msgbox},

    {NULL, NULL}

};

int __declspec(dllexport) luaopen_dllforlua(lua_State* L)

{

    luaL_register(L, "dllforlua", mylib);//使用luaL_register注册函数

    return 1;

}

使用luaL_register函数,则Lua脚本应该写成:

require("dllforlua")

dllforlua.msgbox("Hey, it worked!", "Lua Message Box")

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值