IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> lua脚本 -> 正文阅读

[C++知识库]lua脚本

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、下载lua

lua下载:试验中下载的是5.2.3,使用其他版本链接时可能会报错找不到符号

二、编译

该工程文件内容较少,使用的是makefile,若想编译成vs需要查看对应的库文件依赖。本次编译顺带生成动态库,修改src/makefile文件如下

LUA_SO=liblua.so

LUAC_T= luac
LUAC_O= luac.o

ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
ALL_A= $(LUA_A)

# Targets start here.
default: $(PLAT)

all:    $(ALL_T)

o:      $(ALL_O)

a:      $(ALL_A)

$(LUA_A): $(BASE_O)
        $(AR) $@ $(BASE_O)
        $(RANLIB) $@

$(LUA_T): $(LUA_O) $(LUA_A)
        $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)

$(LUAC_T): $(LUAC_O) $(LUA_A)
        $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)

$(LUA_SO): $(BASE_O)
        $(CC) -o $@ $(MYCFLAGS)  -shared -fPIC -ldl -lm

测试代码

代码如下(示例):

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
extern "C"
{
 
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
};
 
void TestLua();
 
int main()
{
    TestLua();
    return 0;
}
 
void TestLua()
{
    lua_State *L = luaL_newstate();
    luaopen_base(L); //
    luaopen_table(L); //
    luaopen_package(L); //
    luaopen_io(L); //
    luaopen_string(L); //
 
    luaL_openlibs(L); //打开以上所有的lib
 
    string str;
    while (true)
    {
        cout << "输入lua文件路径:" << endl;
        getline(cin, str, '\n');
        if (luaL_loadfile(L, str.c_str())
            || lua_pcall(L, 0, 0, 0) )
        {
            const char * error = lua_tostring(L, -1) ;
            cout << string(error) << endl;
            return;
        }
        else
        {
            break;
        }
 
    }
 
    int a = 0;
    int b = 0;
 
    // 获取a的值
    lua_getglobal(L, "a");
    if (!lua_isnumber(L, -1))
    {
        cout << "-2 error" << lua_isnumber(L, -1) << lua_isnumber(L, -1) << endl;
        return ;
    }
 
    a = lua_tonumber(L, -1);
 
    // 获取b的值
    lua_getglobal(L, "b");
    if (!lua_isnumber(L, -1))
    {
        cout << "-1 error" << endl;
        return ;
    }
    
    b = lua_tonumber(L, -1);
 
    cout << "a = " << a << " b = " << b << endl;
    cout << "a + b = " << a + b << endl;
 
    lua_close(L);
 
}

测试脚本

代码如下(lua.lua):

a=100
b=20

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:20:07  更:2022-03-22 20:22:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/10 20:54:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码