Skip to content
铜雀台

铜雀台

Take time for yourself

  • 首页
  • Linux基础
  • 性能分析
  • 树莓派
  • Lua&Go
  • 关于本站
  • Toggle search form

写一个C++程序调用lua脚本

Posted on 3 12 月, 2023 By admin 写一个C++程序调用lua脚本无评论

设备:orangepi

系统:Linux orangepi3-lts 5.16.17-sun50iw6 #3.0.8

下载安装lua库

官网链接:https://www.lua.org/download.html

curl -R -O http://www.lua.org/ftp/lua-5.4.6.tar.gz
tar zxf lua-5.4.6.tar.gz
cd lua-5.4.6
make all test

实操一下:自动将lua库/头文件安装到了系统目录。

写一个C++程序

这里我是让ChatGPT帮我写的:加载一个名字叫做sum.lua的文件,执行里面的函数 sum()

#include <iostream>
extern "C" {
    #include "lua.h"
    #include "lauxlib.h"
    #include "lualib.h"
}

int main() {
    // 创建一个新的Lua状态
    lua_State *L = luaL_newstate();
    luaL_openlibs(L);

    // 加载并运行Lua脚本文件
    if (luaL_dofile(L, "sum.lua") != LUA_OK) {
        std::cerr << "Error loading script: " << lua_tostring(L, -1) << std::endl;
        lua_close(L);
        return 1;
    }

    // 将函数sum压入栈
    lua_getglobal(L, "sum");

    // 压入参数
    lua_pushinteger(L, 3);
    lua_pushinteger(L, 4);

    // 调用Lua函数,传入2个参数,返回1个结果
    if (lua_pcall(L, 2, 1, 0) != LUA_OK) {
        std::cerr << "Error calling function: " << lua_tostring(L, -1) << std::endl;
        lua_close(L);
        return 1;
    }

    // 获取返回值并打印
    int result = lua_tointeger(L, -1);
    std::cout << "Result: " << result << std::endl;

    // 关闭Lua状态
    lua_close(L);
    return 0;
}

再准备一个lua文件, sum.lua

-- sum.lua
function sum(a, b)
    return a + b
end

实操一下:目录结构&编译&运行

Lua&Go

文章导航

Previous Post: Go的手动编译

发表回复 取消回复

要发表评论,您必须先登录。

联系我

作者:Ham

地址:深圳     

邮件:liuluqqzj@qq.com

关于本站

温故而知新,

Copyright © 2025 铜雀台.

    粤ICP备2021168298号