正文

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

文章摘要

这篇文章介绍了一段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; }