Lua学习笔记--环境配置&Hello World

最近发现要恶补的东西实在是太多了,DX还没学完,现在发现还要用Lua脚本语言,于是,我的笔记又加了一个系列,Lua学习笔记。


一.简介

Lua是一门小巧的脚本语言,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。

Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。

一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

总之,介绍就这么多,从百度百科上抄的闭嘴Lua是游戏中最常用的脚本语言,所以这也是本人学习Lua的目的。


二.编译Lua

从Lua官方网站上下载Lua源码包,地址: http://www.lua.org/download.html

解压,到一个文件夹,我们就可以看到Lua的源码啦。其实这个是一个C语言编写的项目,其中有Makefile文件,在Linux下可以直接根据这个编译。在windows下,我们可以使用强大的VS来编译。
这里我们选择编译一个静态的Lib库,供程序使用。
打开VS,建立一个新解决方案,在解决方案中添加一个空项目,命名为LuaLib,将源代码放在目录下。项目上右键-选择添加现有项,将刚才放在目录中的.h和.c文件全部添加到项目中:


然后需要修改两个地方,因为这个代码里面有两个地方是有main函数的,而我们使用Lua是作为一个模块引入的,所以不需要main函数的。我们把这两个main函数改一下名:
第一个在Lua.c中,将main函数改为lua_main
第二个在Luac.c中,将main函数改为luac_main

下面我们修改一下编译的类型,在项目上右键->属性->配置属性->常规->配置类型  改为静态库.lib


好了,这下我们就可以愉快的编译啦,在Debug目录下生成LuaLib.lib文件:


三.使用Lua写一个Hello World

编译好了Lua文件,我们就可以写Lua啦,不过在使用之前,还是要配置一下头文件目录和库目录。
1.在同一个解决方案下再建立一个项目工程:LuaTest。
2.通过项目->属性->VC++目录,设置包含目录为刚才源代码中.h文件所在的目录。
3.通过项目->属性->VC++目录,设置库目录为刚才生成的.lib所在的目录。



4.注意还需要添加之前编译好的Lualib.lib文件,这里通过项目->属性->连接器->附加依赖项添加了,否则需要在程序中通过#pragma comment(lib, "lualib.lib")来添加
5.好了,环境配置就到这里啦!现在写一个C++的程序,用来调用Lua:
// LuaTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <windows.h>

//因为Lua是C的函数,而我们的程序是C++的,所以要使用extern "C"引入头文件
extern "C"{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include "luaconf.h"
}
//注意还需要添加之前编译好的Lualib.lib文件,这里通过项目->属性->连接器->附加依赖项添加了
//否则需要 #pragma comment(lib, "lualib.lib")来添加


int _tmain(int argc, _TCHAR* argv[])
{
	//打开lua
	lua_State* L = luaL_newstate();
	//加载lib文件
	luaL_openlibs(L);
	//执行lua脚本文件
	luaL_dofile(L, "test.lua");//这里的test.lua为下面要使用的lua脚本文件
	//结束
	lua_close(L);

	system("pause");

	return 0;
}

6.编译,不出意外的话会生成一个LuaTest.exe程序。
7.进入程序所在的目录新建一个脚本文件,命名为test.lua,就写一句hello world吧!
--还是Hello World!
print("Hello world!\n")
8.执行LuaTest.exe文件,得到下面的结果:



四.几点说明

1.lua是用C语言写的,我们引入C语言函数的时候,需要使用extern "C"关键字来告诉这个函数是C语言的,防止C++编译器把它编译成C++格式的。
2.在Lua中,注释使用--









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值