Lua的使用入门之C/C++与lua函数的混合调用
来源:互联网 发布:端口范围 编辑:程序博客网 时间:2024/06/03 12:09
参考文章:http://www.oschina.net/code/snippet_243525_25045#41626
lua与c/c++遵循相应规范的条件下可以相互调用.
1.在c/c++中定义一个lua接口的函数:
//要在lua中调用的c函数
int l_hello(lua_State* pState)
{
cout<<"This is c function: l_hello"<<endl;
return 0;
}
// lua函数对应的lua中注册和调用的l_hello函数基址的别名
lua_register_t lua_cfunction_list[] = {
"hello", l_hello, // [1]
NULL // [2]
};
2.在c中编写l写到ua状态机的函数注册函数:
// 将c函数注册到lua状态机中
void register_functions(lua_State* L)
{
lua_register_t* p = lua_cfunction_list;
while (p->name) {
lua_pushcfunction(L, p->pfunc);// 将函数压栈->l_hello
lua_setglobal(L, p->name);//将函数名设为lua文件中调用c函数l_hello的函数别名
++p;
}
}
3.lua中编写调用c函数l_hello的函数:
main_lua.lua:
print("loading file: main_lua.lua...");
function MainEntry(...)
print("this is MainEntry()");
hello();// 调用的c函数l_hello
for i,v in ipairs(arg) do
print(i.."="..tostring(v));
end
end
4.在c中调用MainEntry:
lua_getglobal(L, "MainEntry");
if (lua_type(L, -1) == LUA_TFUNCTION)
{
for (int i = 0; i < argc; i++)
{
lua_pushstring(L, argv[i]);
}
lua_pcall(L, argc, 0, 0);// 调用lua函数
}
由此可见,lua/c混合调用就是c->lua->c,重要的逻辑判断函数在lua中编写,而调用lua函数的主体c代码主要是执行一些数据存取、检查设定等工作。
代码链接:
http://download.csdn.net/detail/yuanmushen/6646875
- Lua的使用入门之C/C++与lua函数的混合调用
- Lua调用C函数:tolua++ 的使用
- lua入门之二:c/c++ 调用lua及多个函数返回值的获取
- lua入门之二:c/c++ 调用lua及多个函数返回值的获取
- Lua入门之二:C/C++ 调用Lua及多个函数返回值的获取
- Lua与C/C++的交互5:C/C++调用Lua函数
- Lua与C/C++的交互6:Lua调用C/C++函数
- [lua]C调用lua函数
- Lua编程(六)C对Lua函数的调用
- 使用 lua 调用 c 语言写的函数
- Lua调用C函数的实现
- LUA脚本调用C函数的方法
- C/C++与Lua的相互调用
- lua与C的互相调用
- Lua与C之间的调用
- Lua 脚本语言 与 C的互相调用
- Lua的使用入门之在C++程序中调用lua函数1
- Lua调用C函数
- spring学习笔记(一)
- 从移动2G、3G、4G和iphone5s说起的手机那点事
- socket5代理 客户端代码
- 设计一个计算器类Calculator,它只有一个计数的成员count。该计算器的有效范围说0~65535,实现计算器的前自增、后自增、前自减、后自减、两个计算器相加减等运算
- POJ 1659 - Frogs' Neighborhood , Havel_Hakimi 定理
- Lua的使用入门之C/C++与lua函数的混合调用
- ACM之java速成
- nxclient运行时的几个问题的处理
- U盘安装 Centos Ubuntu 及安装后的源等设置
- 图像傅立叶变换的物理意义
- Working Practice-使用错误记录器记录错误
- linux中单引号、双引号、反引号的作用
- tnsnames.ora中的连接串
- 初步了解Html5,运用Html5的一些基本控件