问题:
lua c api未提供获取lua函数到c的api,lua_tofunction获取的是c函数,而不是lua函数,故,用int类型作为lua函数的句柄,当需要调用lua函数时,在进行转换。
三张表:
1、存 句柄 -> lua函数的映射
2、存 lua函数 -> 句柄的反向映射
3、存 句柄 -> 此句柄的引用计数。(要确保多个地方用,而不会因为一个地方不用了然后移除,也不能永久存,故用引用计数管理)
1,intref=luaL_ref(L,LUA_REGISTRYINDEX);//把栈顶的obj存在lua的表里面,返回一个唯一的引用,(栈顶的obj被自动清除),,(这个引用作为回调函数的句柄)/////////////下面是调用2,lu…
Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lu…
1.lua函数都在refid_funrefid_fun[refid]=funTOLUA_APIinttoluafix_ref_function(lua_State*L,intlo,intdef){//functionatloif(!lua_…
前面讲了一下,C++读取lua文件中的变量,包括一维表、二维表这些,这节讲一下如何在lua文件中去调用C++函数C++代码如下#include<stdio.h>extern"C"{#include"lua.h"#include"…
函数Lua为面向对象式的调用也提供了一种特殊的语法——冒号操作符。表达式o.foo(o,x)的另一种写法是o:foo(x),冒号操作符使调用o.foo时将o隐含地作为函数的第一歌参数。一个Lua程序既可以使用以Lua编写的函数,又可以调用以…
Lua调用C函数用的堆栈是临时的,调用结束之后就被销毁了.C调用Lua函数时,C负责堆栈.1、C++调用Lua调用函数的通用方法:1intlua_general_call(lua_State*lua,constchar*func,const…
网上搜索C、C++调用lua函数,有一大堆复制粘贴的。但是搜索《C调用lua的table里面的函数》怎么就没几个呢?经过探索,发现其实逻辑是这样的:1.根据name获取table;并判断是否为table2.根据name2获取table的成员…