Lua中调用C++函数示例(lua调用function)深度揭秘

随心笔谈9个月前更新 admin
212 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了一段C语言代码,用于实现一个计算平均值的Lua绑定函数。代码通过混合编译(C语言与Lua)的方式,实现了以下功能: 1. 使用`extern "C" {`将Lua库函数与C代码混合编译2. 定义了`average`函数,用于从Lua栈中读取整数n,计算n个数的平均值,并将结果返回3. `average`函数通过`lua_tonumber`将数值从栈中读取,并使用`lua_pop`弹出元素4. 在`_tmain`函数中,初始化Lua环境,注册函数`avg`,并加载外部Lua脚本`cof.lua` 文章的核心内容是通过混合编译技术,实现了C语言与Lua之间的函数绑定,用于简单的数值计算功能。


#include “stdafx.h”
#include<stdio.h>

extern “C” { //如不用extern会出现连接错误,编译成了C++文件
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}

int average(lua_State *L){
int n=lua_gettop(L);
int i;
double sum=0;
for(i=0;i<n;i++){
sum+=lua_tonumber(L,-1);
lua_pop(L,1);
}
lua_pushnumber(L,sum/n);
if(!lua_isnumber(L,-1))
luaL_error(L,”push error!\n”);
return 1;
}

int _tmain(int argc, _TCHAR* argv[])
{
lua_State* L=lua_open();
luaL_openlibs(L); //新版本库添加的方法

lua_register(L,”avg”,average);
luaL_dofile(L,”cof.lua”);

getchar();
return 0;
}

© 版权声明

相关文章