Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言。不幸的是,网上很少有关于这个语言的在线教程。我主要通过阅读其源代码来了解它是怎样工作并且通过一些发布的程序学习它。希望,通过下面的教程,会让学习Lua更加简单。
本教程涵盖了Lua5.1。在Lua的每一个版本中都有一些非常不同之处。下面的示例代码将不能在老版本的Lua下运行。如果你仍然在使用老版本而且不愿意升级,不用担心,我已经在文章底部提供了4.0和5.0教程的源代码下载连接。好了,让我们开始吧!
首先,你需要下载Lua。你需要从Lua下载页面去下载源代码。如果你需要编译好了的二进制库,你能在LuaBinaries 中找到你想要的库(lib or dll)。
现在,我们需要安装Lua。在Linux下,你应该先解压文件,然后以root 用户在命令行键入"make linux"和"make linux install"。如果你需要帮助,请参考源代码文件夹中的INSTALL文件。现在,我下载了windows平台下的二进制库包并把它们解压到"C:\ Program Files\lua5.1"。
在Linux下不需要我们做任何设置,但是在windows平台下我们必须配置Visual C++,以便让编译器和连接器找到Lua文件。
打开Visual C++,选择Tools菜单中的选项菜单。
展开"项目",并选择"VC++ 目录"。
选择"包含文件",添加一个新路径"C:\Program Files\lua5.1\include"。
在选择"库文家",添加路径"C:\Program Files\lua5.1\lib\dll"(这里假设你下载的库为dll,你也可以下载静态链接库)。
确定。
现在你可以开始编译你的***个Lua应用了。
使用Lua开始你的***个程序
这个程序简短且直接,下面做一点说明:
lua_open()返回一个指向Lua解释器的一个指针。
luaL_openlibs()用于装载Lua库,它提供了一些简单的函数,如:print。
通过调用luaL_dofile()执行脚本。它的作用是读取并解释脚本。
***,通过lua_close()函数关闭Lua。
保存文件为luatest.cpp。如果你直接使用C而不是C++,将文件名改为luatest.c,然后将extern "C"删除。
- #include <stdio.h>extern "C" {
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- }
- /*
Lua解释器指针
- */
- lua_State* L;int main ( int argc, char *argv[] ){
- /* 初始化Lua */ L = lua_open();
- /* 载入Lua基本库 */
- luaL_openlibs(L);
- /* 运行脚本 */ luaL_dofile(L, "test.lua");
- /* 清除Lua */
- lua_close(L); /* 暂停 */
- printf( "Press enter to exit…" );
- getchar();
- return 0;
- }
下面是test.lua的内容。
- -- simple testprint "Hello, World!"
编译
在Linux下,在命令行键入:
- g++ luatest.cpp -llua -ldl -o luatest
然后,键入下列命令运行:
./luatest如果没有问题,程序将在终端输出Hello, World!
在Visual C++你将需要进行下列步骤:
创建一个新的空Win32控制台应用工程。
将"luatest.cpp"加入你的工程。
选择项目菜单中的属性菜单。
在"连接器"的"输入"栏目的"附加依赖项"中输入"lua5.1.lib"。
确定。
此时,按F7构建程序。
如果你采用的是dll库,请确保将其放在应用程序的目录中或者windows系统能够找到它的地方。如果你采用的是静态连接库,则不需要。 (Groov0V翻译,转载自CSDN)
- include <stdio.h>extern "C"
- {
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"}
- /* Lua解释器指针 */
- lua_State* L;
- int main ( int argc, char *argv[] )
- {
- /* 初始化Lua */
- L = lua_open();
- /* 载入Lua基本库 */
- luaL_openlibs(L);
- /* 运行脚本 */
- luaL_dofile(L, "test.lua");
- /* 清除Lua */
- lua_close(L);
- /* 暂停 */
- printf( "Press enter to exit…" );
- getchar();
- return 0;
- }
小结:详细讲解 Lua 脚本语言入门学习的内容介绍完了,希望通过本文的学习能对你有所帮助!