Lua的使用入门之C/C++与lua函数的混合调用

原创 2013年12月03日 00:05:29

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

C/C++ 与lua混合使用入门讲的比较好的文章

转载一篇将C/C++ 与lua混合使用入门讲的比较好的文章 转自 http://www.open-open.com/home/space-6246-do-blog-id-1426.html ...

lua调用C/C++函数

  • 2014年08月27日 17:02
  • 1KB
  • 下载

Lua中调用C/C++函数

Lua中调用C/C++函数   上次偶说到从C/C++中调用Lua的函数, 然后就有朋友问从Lua中如何调用C/C++的函数, 所以偶们这次就来说说这个问题. 首先偶们会在C++中建立一...

Lua调用C/C++函数

// // main.cpp // LuaAndCpp //#include static int lua_getName(lua_State* L){ lua_pushstring(L, ...

tolua++绑定C/C++语言函数供lua调用

1,C/C++提供给lua的接口写在ScriptAPI_*.h和ScriptAPI_*.cpp中(根据模块可以分为多个文件)。为简化问题,要求接口参数为简单数据类型(number、string),且全...

在LUA脚本中调用C/C++函数

三、在LUA脚本中调用C/C++函数        可以被Lua函数调用的C函数必须遵循的协议(这个协议定义了参数和结果的传递方式):C函数从LUA栈上按直接的顺序获取参数(第一个参数首先被push)...

cocos2dx关于在c/c++中调用lua函数

关于在c/c++中调用lua函数

Lua中调用C/C++函数

翻译自http://gamedevgeek.com/tutorials/calling-c-functions-from-lua/ 在Lua中调用C++函数 我的第二部分教程讲解了怎样在C++中调用L...

lua入门之二:c/c++ 调用lua及多个函数返回值的获取

当 Lua 调用 C 函数的时候,使用和 C 调用 Lua 相同类型的栈来交互。C 函数从栈中获取她的参数,调用结束后将返回结果放到栈中。为了区分返回结果和栈中的其他的值,每个 C 函数还会返回结果的...

lua入门之二:c/c++ 调用lua及多个函数返回值的获取

当 Lua 调用 C 函数的时候,使用和 C 调用 Lua 相同类型的栈来交互。C 函数从栈中获取她的参数,调用结束后将返回结果放到栈中。为了区分返回结果和栈中的其他的值,每个 C 函数还会返回结果的...
  • ybhjx
  • ybhjx
  • 2016年03月24日 13:59
  • 419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lua的使用入门之C/C++与lua函数的混合调用
举报原因:
原因补充:

(最多只允许输入30个字)