• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua中调用C++函数示例

Lua中调用C++函数示例

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了lua调用c++,c++ lua,lua调用c函数,lua函数,lua随机函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Lua当然也能够调用C中定义的函数。一个平均数的例子,解释一下。
  
下面给出的C++函数average()演示了如何接受多个参数且返回超过一个值。
1.lua_gettop函数返回栈顶的索引值。因为在Lua中栈是从1开始编号的,因此该函数获得的值就是参数的个数。

2.在for循环中计算所有参数之和。
3.调用lua_pushnumber()将参数的平均值压栈。 
4.最后,函数返回1,说明有一个返回值在栈中。
现在C++函数已经被定义好了,我们必须将它告诉Lua解释器。这将在main函数中初始化Lua解释器和载入库完成之后完成注册函数:
lua_register(L, "avg", average);  //第二参数为Lua中调用的函数名 
</div>
 
C++端:
 

#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; 
} 
</div>

Lua文件:
print("avg is ",avg(1,2,3,4,5,6,7,8)) 
</div>
运行程序即可实现求平均数的功能

</div>

您可能想查找下面的文章:

  • Lua中调用C++函数示例
  • C++中调用Lua配置文件和响应函数示例
  • 使用Lua来扩展C++程序的方法
  • Lua的table库函数insert、remove、concat、sort详细介绍
  • C++遍历Lua table的方法实例
  • 把Lua函数传递到C/C++中实例
  • Lua和C++语言的交互详解

相关文章

  • Lua loadstring函数用法实例
  • 在Mac OS中安装Lua的教程
  • Lua利用cjson读写json示例分享
  • Lua中的元方法__newindex详解
  • Ruby元编程技术详解(Ruby Metaprogramming techniques)
  • Lua面向对象之类和继承浅析
  • lua日志文件处理代码
  • Lua和C++的通信流程代码实例
  • Lua获取utf8字符串长度和字符串截取并用...代替
  • Lua中的函数(function)、可变参数、局部函数、尾递归优化等实例讲解

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua中使用.和:调用函数的区别
    • Lua教程(十五):输入输出库(I/O库)
    • Lua中使用模块的一些基础知识
    • Lua中实现递归删除一个文件夹
    • Lua字符串库中的几个重点函数介绍
    • Lua极简入门指南(三): loadfile和错误处理
    • Lua中的table浅析
    • lua 基础教程
    • Lua中break语句的使用方法详解
    • Lua中的数学库总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有