Lua 与C/C++ 交互系列: Lua调用C/C++函数(3)

这篇博客探讨了如何使用Lua API中的lua_pushcfunction()及其宏定义lua_pushcfunction、lua_register来注册和调用C/C++函数。文章详细介绍了luaL_openlib和luaL_register这两个便利的宏,它们用于在Lua中全局注册C函数和整个C模块。同时,还阐述了在Lua中如何调用这些注册的函数和模块。
摘要由CSDN通过智能技术生成


1、Lua API中提供注册C函数关键在lua_pushcclouse()函数。该函数可以在Lua Code中定义C函数。 但是Lua 提供了几个常用的宏定义,用于注册C函数。

这几个宏定义为:

/#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0)


#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))


LUALIB_API void luaL_openlib (lua_State *L, const char *libname, const luaL_Reg *l, int nup)


LUALIB_API void (luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l)

提供的宏定义和拓展库,主要为了方便在全局变量中注册C函数和注册整个C模块。


#include <iostream>
using namespace std;
extern "C" 
{
	#include "lua.h"
	#include "lauxlib.h"
	#include "lualib.h"
}

//在Lua Code中注册的函数
int  sum_zero(lua_State *L)
{
	int top =lua_gettop(L);
	int sum =0;
	for(size_t t=top;t>0;t--)
	{
		int lnum =lua_tonumber(L,t); 
		sum+=lnum;
	}
	lua_pushnumb
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值