阿彪的Blog

能力在于平日里积累

使用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

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

使用Lua5.1互相调用函数

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭