当前位置: 首页 > news >正文

Lua 如何在Lua中调用C/C++函数

Lua调用C函数有两种方式

  1. 程序主体在C中运行,C函数注册到Lua中。C调用Lua,Lua调用C注册的函数,C或者Lua得到函数的执行结果。
  2. 程序主体在Lua中运行,C函数作为库函数供Lua使用。

C++的代码如下

如何在Lua脚本中调用这个C语言函数(add_function)?

#include <QCoreApplication>
#include <stdio.h>
extern "C"{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}/* C语言函数 */
int add_function(lua_State* L)
{/* 从Lua栈中获取参数 */double x = luaL_checknumber(L, 1);double y = luaL_checknumber(L, 2);/* 执行函数操作 */double z = x + y;/* 将结果压入Lua栈中 */lua_pushnumber(L, z);/* 返回结果数量 */return 1;
}lua_State *L;
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);printf("started\r\n");L =  luaL_newstate();//新建lua解释器luaL_openlibs(L);//载入lua基础库#if 1/* 将add_function函数绑定到Lua中的call_add_function函数,这样就可以在Lua脚本中调用这个C语言函数了 */lua_register(L, "call_add_function", add_function);/* 加载Lua脚本文件 */luaL_dofile(L, "./test.lua");//执行lua中的callcfun函数lua_getglobal(L, "callcfun");lua_call(L, 0, 0);
#endif/*cleanup Lua*/lua_close(L);system("pause");return a.exec();
}

lua调用C++函数

新建 text.lua,代码如下:

-- Lua脚本(在Lua脚本中,可以使用以下代码来调用C语言函数)
function callcfun()local z = call_add_function(1.5, 2.3)print(z)  -- 输出3.8
end
http://www.lryc.cn/news/319326.html

相关文章:

  • JVM学习-类加载
  • PyCharm中如何使用不同的虚拟环境
  • Unity Live Capture 中实现面部捕捉同步模型动画
  • Codeforces Round 932(div2)||ABD
  • 基于最小二乘法的太阳黑子活动模型参数辨识和预测matlab仿真
  • VSCode配置cuda C++编程代码提示的详细步骤
  • JUnit 面试题及答案整理,最新面试题
  • 使用Lua编写Wireshark解析ProtoBuf插件
  • ClickHouse副本节点数据损坏恢复
  • YOLOv9改进策略:注意力机制 | SimAM(无参Attention),效果秒杀CBAM、SE
  • 宝塔 安装对外服务Tomcat和JDK
  • rust最新版本安装-提高下载速度
  • 数据清洗与预处理:打造高质量数据分析基础
  • Linux服务器(Debian系)包含UOS安全相关巡检shell脚本
  • BS4网络提取selenium.chrome.WebDriver类的方法及属性
  • Prompt Engineering(提示工程)
  • 移远通信亮相AWE 2024,以科技力量推动智能家居产业加速发展
  • Java中上传数据的安全性探讨与实践
  • Leetcode 17. 电话号码的字母组合
  • 蓝桥杯单片机快速开发笔记——独立键盘
  • Swift 面试题及答案整理,最新面试题
  • 微信小程序上传图片c# asp.net mvc端接收案例
  • 57、服务攻防——应用协议RsyncSSHRDP漏洞批扫口令猜解
  • java:Druid工具类解析sql获取表名
  • MySQL--深入理解MVCC机制原理
  • 数据挖掘简介与应用领域概述
  • 瑞熙贝通打造智慧校园实验室安全综合管理平台
  • openstack调整虚拟机CPU 内存 磁盘 --来自gpt
  • 【IC设计】Verilog线性序列机点灯案例(三)(小梅哥课程)
  • 【打工日常】使用Docker部署团队协作文档工具