C++与Lua交互

本文详细介绍了在mac、linux系统上如何搭建C++与Lua交互的环境,包括C++调用lua脚本和lua调用C++编译的动态库。在C++端,演示了如何编译并执行调用lua脚本的示例代码;在lua端,展示了如何将C++编译为动态库并被lua脚本调用。通过实例,深入理解两者之间的交互过程。
摘要由CSDN通过智能技术生成


lua作为一门动态语言,可用来当做配置文件和实现经常变化的业务功能,很方便的实现热更新。同时lua作为一门胶水语言,配合强大的C++作逻辑支撑,程序性能高、开发效率快,犹如珠帘合璧,所向无敌。C++与lua的交互主要通过lua的虚拟栈实现,本文不打算深入讲解其中原理,只是简单记录下C++与lua的调用关系。

环境搭建

mac、linux系统
$ wget http://www.lua.org/ftp/lua-5.2.3.tar.gz
$ tar zxf lua-5.2.3.tar.gz
$ cd lua-5.2.3
$ make posix
$ make posix install

windows系统:略

1.C++调用lua

假如当前文件夹为demo1。先创建一个lua脚本, 路径为:demo1/scripts/test.lua。脚本内容如下:

-- 全局变量
id = 666
title = "this is a test"
array = {r = 2,g = 3,b = 4}
array_1d = {2,5,26,8}
array_2d = {
  {2,5},{15,18},{25,26,28},{0,5,4}}

-- 无参函数
function ruler_func()
    print("[lua]: this is some thing need to tell you!!!");
end

-- 有参函数
function add_func(a,b)
    print("[lua]: a("..a..") + b("..b..") ="..a+b.."!");
    return a+b;
end

在当前文件夹创建C++文件demo1/demo.cpp,用来测试调用lua脚本。文件内容如下:

/*
 *  demo.cpp 
 *  demo
 *
 *  Created by Jevstein on 2018/10/16 11:30.
 *  Copyright @ 2018year Jevstein. All rights reserved.
 *
 */

#include <iostream>
#include <string>
using namespace std;

//0.包含lua头文件
extern "C"
{
	#include <lua.h>
	#include <lauxlib.h>
	#include <lualib.h>
}

void call_lua_test()
{
	//1.创建lua环境
	lua_State *L = luaL_newstate(); //lua_open()
	if (L == NULL)
	{
		std::cout << "[C++]: Failed to create Lua State!" << std::endl;
		return;
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值