加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

第一个Lua程序

发布时间:2020-12-14 21:58:12 所属栏目:大数据 来源:网络整理
导读:1. Lua简介 Lua是一个轻量化的脚本语言,体积小,速度快。 Lua须嵌入在其他宿主语言(如:C、C++)中来执行,因此功能也很容易灵活扩充。 Lua是个动态型别语言,这表示不需要对变量宣告类型,而每个值都有自己所代表的类型。 Lua常见用于游戏开发与嵌入式开发,

1. Lua简介

Lua是一个轻量化的脚本语言,体积小,速度快。

Lua须嵌入在其他宿主语言(如:C、C++)中来执行,因此功能也很容易灵活扩充。

Lua是个动态型别语言,这表示不需要对变量宣告类型,而每个值都有自己所代表的类型。

Lua常见用于游戏开发与嵌入式开发,例如编写游戏AI、剧情脚本,把程序模块化。

使用Lua编写程序中可模块化之部分的好处是,一旦模块内容有所变更,无需重编译主程序就可直接使用新版本的模块。


2. Lua环境配置

在想使用Lua优化我们的软件开发过程之前,我们需要对开发环境做一些配置,

本教程中使用Visual Studio 2010建置C++程序,在需要嵌入Lua脚本语言时需要引用Lua的library。

1 生成Lua library

首先到Lua官方下载页面下载Lua library的源代码?http://www.lua.org/download.html

本教程中使用的版本是Lua 5.3.1?http://www.lua.org/ftp/lua-5.3.1.tar.gz

下载好之后用VS新建一个静态库工程,选项中不勾选"先行编译头文件(Pre-Compiled Header)"和"MFC"。


将刚才下载的压缩包内之src目录中的所有文件除了lua.c和Makefile外,全导入到静态库工程中。


接下来对静态库工程属性进行配置,

进入工作列选单中的"属性" -> "c/c++" -> "高级" -> "编译为",点击下拉选单选择"编译为C++代码(/TP)"

如此就可以在其他程序使用此lib时,直接从C++中调用C的头文件,否则,在C++程序中需要以加入extern "C" 的方式宣告具有C连结来载入C的头文件,表示将头文件以C的规范编译。


最后就可以建置工程,生成lib。


2 配置主程序之工程属性

新建一个实现Lua的工程。

在工程目录下建立include目录,把Lua库的几个头文件复制到include目录底下:

lua.h

lauxlib.h

lualib.h

luaconf.h


接着对此工程属性作配置,到"属性" -> "连结器" -> "输入" -> "其他相依性" 加入刚刚生成的lib。

"忽略特定的预设程式库"中可选择性的加入LIBCMT.lib 和MSVCRT.lib。


3. 编写代码

现在我们可以开始编写嵌入Lua的程序了,以下给出了一个简单的Hello World示例。

#include "includelua.h"
#include "includelauxlib.h"
#include "includelualib.h"
#include "windows.h"


void main(int argc,char* argv[])
{
	lua_State *pLua = luaL_newstate(); // Lua5.2后的版本遗弃lua_open(),改用luaL_newstate()
	if(!pLua)
	{
		printf("Failed to open Luan");
		return;
	}

	luaL_openlibs(pLua);

	const char *buf="print('Hello World!')";

	luaL_dostring(pLua,buf);

	lua_close(pLua);

	system("pause");
	return;
}
输出将会是?Hello World!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读