广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C/C++中怎么用Lua函数
  • 260
分享到

C/C++中怎么用Lua函数

luac++ 2022-10-19 14:10:28 260人浏览 独家记忆
摘要

本篇内容介绍了“C/C++中怎么用lua函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.简介偶们这次

本篇内容介绍了“C/C++中怎么用lua函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.简介

偶们这次主要说说怎么由Lua定义函数, 然后在C或者c++中调用. 这里偶们暂不涉及C++的对象问题, 只讨论调用函数的参数, 返回值和全局变量的使用.

2.

这里偶们在e12.lua里先定义一个简单的add(), x,y为加法的两个参数,return 直接返回相加后的结果.

例e12.lua

-- add two numbers function add ( x, y ) return x + y end

在前一次里, 偶们说到 lua_dofile() 可以直接在C中执行lua文件. 因为偶们这个程序里只定义了一个add()函数, 所以程序执行后并不直接结果, 效果相当于在C中定义了一个函数一样.

Lua的函数可以有多个参数, 也可以有多个返回值, 这都是由栈(stack)实现的.需要调用一个函数时, 就把这个函数压入栈,  然后顺序压入所有参数, 然后用lua_call()调用这个函数. 函数返回后, 返回值也是存放在栈中.  这个过程和汇编执行函数调用的过程是一样的.

例e13.cpp 是一个调用上面的Lua函数的例子

#include extern "C" { // 这是个C++程序, 所以要extern "C", // 因为lua的头文件都是C格式的  #include "lua.h" #include "lualib.h" #include "lauxlib.h" }  lua_State* L; int luaadd ( int x, int y ) { int sum;  lua_getglobal(L, "add");  lua_pushnumber(L, x);  lua_pushnumber(L, y);  lua_call(L, 2, 1);  sum = (int)lua_tonumber(L, -1); lua_pop(L, 1); return sum; } int main ( int arGC, char *argv[] ) { int sum;  L = lua_open();  lua_baselibopen(L);  lua_dofile(L, "e12.lua");  sum = luaadd( 10, 15 );  printf( "The sum is %d\n", sum );  lua_close(L); return 0; }

程序说明:

main中过程偶们上次已经说过了, 所以这次只说说luaadd的过程

* 首先用lua_getglobal()把add函数压栈

* 然后用lua_pushnumber()依次把x,y压栈

* 然后调用lua_call(), 并且告诉程序偶们有两个参数一个返回值

* 接着偶们从栈顶取回返回值, 用lua_tonumber()

* ***偶们用lua_pop()把返回值清掉

运行结果:

The sum is 25

编译方法

linux下把程序存成e13.cpp

g++ e13.cpp -llua -llualib -o e13

./e13

VC下编译方法

* 首先建立一个空的Win32 Console Application Project

* 把e13.cpp加入工程中

* 点project setting,然后设置link选项, 再加上lua.lib lualib.lib两个额外的库

3.全局变量

上面偶们用到了lua_getglobal()但并没有详细讲, 这里偶们再举两个小例子来说下全局变量

lua_getglobal()的作用就是把lua中全局变量的值压入栈

lua_getglobal(L, "z");

z = (int)lua_tonumber(L, 1);

lua_pop(L, 1);

假设Lua程序中定义了一个全局变量z, 这段小程序就是把z的值取出放入C的变量z中.

另外Lua中还有一个对应的函数lua_setglobal(), 作用是用栈顶的值填充指定的全局变量

lua_pushnumber(L, 10);

lua_setglobal(L, "z");

例如这段小程序就是把lua中的全局变量z设为10, 如果lua中未定义z的话, 就会自动创建一个

全局变量z并设为10.

“C/C++中怎么用Lua函数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: C/C++中怎么用Lua函数

本文链接: https://www.lsjlt.com/news/86427.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C/C++中怎么用Lua函数
    本篇内容介绍了“C/C++中怎么用Lua函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.简介偶们这次...
    99+
    2022-10-19
    lua c++
  • C/C++中文件IO函数怎么用
    这篇文章主要为大家展示了“C/C++中文件IO函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C/C++中文件IO函数怎么用”这篇文章吧。文件(file)通常是在磁盘或固态硬盘上的一段已...
    99+
    2023-06-29
  • 怎么在Lua中管理C对象
    本篇内容主要讲解“怎么在Lua中管理C对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Lua中管理C对象”吧!今天同事在设计引擎的脚本接口时遇到一个问题...
    99+
    2022-10-19
    lua c
  • C++中的函数怎么用
    这篇文章将为大家详细讲解有关C++中的函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、基础函数:封装了一段代码,可以在一次执行过程中被反复调用,包含函数头和函数体;函数头:函数名称(标识符),...
    99+
    2023-06-21
  • 怎么实现C#与Lua相互调用
    这篇文章主要介绍“怎么实现C#与Lua相互调用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么实现C#与Lua相互调用”文章能帮助大家解决问题。一、编译Lua动态链接库1. 编译Windows下使...
    99+
    2023-06-30
  • C语言中函数怎么用
    这篇文章主要为大家展示了“C语言中函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中函数怎么用”这篇文章吧。函数函数定义百度百科对函数的定义:子程序在计算机科学中,子程序是一个大型...
    99+
    2023-06-25
  • C#中内联函数怎么用
    这篇文章将为大家详细讲解有关C#中内联函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C++ 中有个内联函数,使用 inline 来修饰函数,编译器就会对其进行优化,将此函数作为代码判断插入到调用...
    99+
    2023-06-29
  • C++中GetAsyncKeyState函数怎么使用
    GetAsyncKeyState函数用于获取指定虚拟键的状态。它的声明如下:```cppSHORT WINAPI GetAsyncK...
    99+
    2023-09-29
    C++
  • C++中CreateFile函数怎么使用
    在C++中使用CreateFile函数来创建或打开一个文件,需要遵循以下步骤:1. 包含头文件:```cpp#include ```...
    99+
    2023-09-26
    C++
  • C#中get、set函数怎么用
    这篇文章将为大家详细讲解有关C#中get、set函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C# get set不提倡将域的保护级别设为 public而使用户在类外任意操作--那样太不OO,或...
    99+
    2023-06-17
  • C++中replace()函数怎么使用
    这篇文章主要介绍“C++中replace()函数怎么使用”,在日常操作中,相信很多人在C++中replace()函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++中replace()函数怎么使用...
    99+
    2023-06-21
  • C/C++语言中函数重载功能怎么用
    小编给大家分享一下C/C++语言中函数重载功能怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!“函数重载”指的是可以有多个同名的函数,因此 名称进行了重载。这...
    99+
    2023-06-03
  • C#中怎么构造函数
    本篇内容介绍了“C#中怎么构造函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#构造函数大体上分为静态C#构造函数和实例C#构造函数,实...
    99+
    2023-06-18
  • C#中的构造函数怎么用
    这篇文章主要介绍了C#中的构造函数怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中的构造函数怎么用文章都会有所收获,下面我们一起来看看吧。C# 中的构造函数类的 构造函数 是类的一...
    99+
    2023-06-17
  • C++中的sort()函数怎么使用
    这篇文章主要介绍“C++中的sort()函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中的sort()函数怎么使用”文章能帮助大家解决问题。sort(v.begin(),v.end...
    99+
    2023-07-05
  • C++中的String函数怎么使用
    这篇文章主要介绍“C++中的String函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中的String函数怎么使用”文章能帮助大家解决问题。一. string的构造函数的形式:st...
    99+
    2023-07-05
  • c语言中isalpha函数怎么用
    在C语言中,isalpha函数用于检查一个字符是否为字母。该函数的原型为: #include int isalpha(int c)...
    99+
    2023-10-23
    c语言
  • C#中怎么使用构造函数
    本篇文章给大家分享的是有关C#中怎么使用构造函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#构造函数的名字不能随便起,必须让编译器认得出才可以被自动执行。它的命名方法既简...
    99+
    2023-06-17
  • C#中的DateTime函数怎么使用
    本篇内容主要讲解“C#中的DateTime函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中的DateTime函数怎么使用”吧!一、初始化:DateTime dt&nbs...
    99+
    2023-07-02
  • c++中的seekg()函数怎么使用
    在C++中,`seekg()`函数用于将文件的读取位置移动到指定的位置。`seekg()`函数有两个参数:1. `offset`:表...
    99+
    2023-08-19
    c++ seekg()
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作