Lua与C++ 交互

6 篇文章 0 订阅
2 篇文章 0 订阅

最近比较有时间,就想总结下自己学到的东西。

由于我出来工作就是使用了 lua 和 c++,因此这里想说下怎么使用这两个东西来搭建程序,怎么完成一个应用,当然我个人能力有限,有哪里说的不对的地方,还请网友们多多指点,大家相互学习。好了废话少说。。。开始

lua是解析行脚本语言,他不能单独运行,于是我们下载他的解析器源码,点击这网址 http://www.lua.org/ 在官网中找到lua源码包,我当前使用的版本是 lua5.3.2.。下载好了以后我们看到文件里面有两个文件夹 src和doc, 我们需要用到的就是src文件夹下面的源文件,至于doc留给大家自己看了。这个lua源码包还提供了linux下编译的makefile,因此你可以跨平台使用这个包。我现在是在vs2013上使用。准备好后我们就开始来创建一个工程了,如下图


工程创建完后,我们把 lua源文件add进来


把lua的src目录下的.h和 .c文件加载完后,由于我们需要把这编译成一个静态库,方便我们编程使用,于是我们需要设置下工程的属性。

右键工程,选中工程属性,出现以下界面,修改红色地方


这样子我们就可以编译了,但是在工程中有两个文件 lua.c 和luac.c里面写了 main函数,由于我们编译的lib库不需要main所以你可以手动注释掉这两个函数。

好了 ,编译运行生成 lib,由于我的工程名字是luaLib,因此我这里生成的是 luaLib.lib。好了拿着这个lib 和 头文件lauxlib.h、lua.hpp、luaconf.h、lualib.h、lua.h我们就可以编写我们的lua和C++交互程序了。

新建一个工程,名字叫testlua,建立方式与上面相同。在source files中添加一个新的c++文件,在这个文件里面添加以下代码

#include <iostream>  
#include <string.h>  
using namespace std;
extern "C"
{
#include "lua.h"  
#include "lauxlib.h"  
#include "lualib.h"  
}
// 获取一个全局的lua堆栈
/*
lua_State * init_luaState()
{
	lua_State * gL = luaL_newstate();
	return gL;
}
*/
void main()
{
	lua_State * L = luaL_newstate();
	lua_pushstring(L, "i am a good boy");
	lua_pushnumber(L, 131.1215);	
	if (lua_isstring(L, 1))
	{
		cout << lua_tostring(L, 1) << endl;
	}
	if (lua_isnumber(L, 2)){
		cout << lua_tonumber(L, 2) << endl;
	}
	lua_close(L);
	getchar();
	return;	
}

  由于lua和c/C++是通过堆栈来交互的,所以在程序中我们创建一个lua堆栈,获取他的句柄,通过这个句柄我们就可以进行各种不同的交互了。以上代码仅仅是C++ 对lua堆栈的操作,接下来我再写lua脚本是怎么工作的。有待续......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值