使用Lua5.1互相调用函数

这一个例子就是用来说明如何通过C语言,注册一个static的函数到lua的虚拟机中.然后通过C语言调用lua中的一个函数.lua中的这个函数又会调用C语言中注册的这个函数.

#include <iostream>
#include <lua.hpp>
#pragma comment(lib,"luastatic")

using namespace std;
// 函数定义
static int l_dir(lua_State *L)
{
 cout<<"第一个参数"<<luaL_checkstring(L,1)<<endl;
 cout<<"第二个参数"<<luaL_checknumber(L,2)<<endl;
 cout<<"hi"<<endl;
 return 0;
}

static const struct luaL_reg mylib[]={
 {"dir",l_dir},
 {NULL,NULL}
};

int luaopen_mylib(lua_State *L)
{
 luaL_register(L,"mylib",mylib);
 return 0;
}
int main()
{
 lua_State *L=luaL_newstate();
 luaopen_mylib(L);
 luaL_dofile(L,"d://test.lua");

 // 调用一个函数
 lua_getglobal(L,"f");
 lua_pushnumber(L,2);
 lua_pushnumber(L,3);
 lua_pcall(L,2,1,0);
 lua_close(L);
 return 0;
}

--[[
lua定义出来的文件.
--]]
function f (x, y)
 return mylib.dir("string",100)
 -- return (x^2*math.sin(y))/(1-x)
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值