• [置顶] 轻量级语言Lua入门


                   作为一个脚本爱好者,而且是脚本(Perl)起家的我,一有空就喜欢学习下这些脚本语言。据说魔兽世界、愤怒小鸟都用到了它,所以今天研究下Lua这个叫法有点奇特的脚本大笑

    【转载请注明出处:http://blog.csdn.net/longlong530

    一.Lua简介

             Lua 是一个小巧的脚本语言。作者是巴西人(好像还没有接触过巴西人~)。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。

    Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。


    二.源码下载


    LUA源码下载:http://www.lua.org/ftp/lua-5.2.2.tar.gz

    参考手册:       http://www.ostools.net/apidocs/apidoc?api=lua

    中文教程(年代有点久远了,不过语法应该差不多):http://wenku.baidu.com/view/cbe028533c1ec5da50e270ea.html

    我的入门例子:http://download.csdn.net/detail/longlong530/5670567

    网上还有个所谓15分钟入门的教程,也不错:http://www.oschina.net/translate/learn-lua-in-15-minutes


    三.源码编译:


    1.VS2010新建一个工程,导入源码src文件夹下的所有代码;

    2.配置:  配置属性    -->  常规   -->   配置类型   -->  选择  “静态库(.lib)”

    3.配置:  C/C++   -->  高级  -->  编译为  -->  选择“编译为C++代码(/TP)”,否则使用lua  lib库的时候会报下面的链接错误:

    error LNK1120: 5 个无法解析的外部命令
    error LNK2019: 无法解析的外部符号 "int __cdecl lua_pcallk(struct lua_State *,int,int,int,int,int (__cdecl*)(struct lua_State *))" (?lua_pcallk@@YAHPAUlua_State@@HHHHP6AH0@Z@Z),该符号在函数 _main 中被引用
    error LNK2019: 无法解析的外部符号 "int __cdecl luaL_loadfilex(struct lua_State *,char const *,char const *)" (?luaL_loadfilex@@YAHPAUlua_State@@PBD1@Z),该符号在函数 _main 中被引用
    error LNK2019: 无法解析的外部符号 "struct lua_State * __cdecl luaL_newstate(void)" (?luaL_newstate@@YAPAUlua_State@@XZ),该符号在函数 _main 中被引用	
    error LNK2019: 无法解析的外部符号 "void __cdecl lua_close(struct lua_State *)" (?lua_close@@YAXPAUlua_State@@@Z),该符号在函数 _main 中被引用	
    error LNK2019: 无法解析的外部符号 "void __cdecl luaL_openlibs(struct lua_State *)" (?luaL_openlibs@@YAXPAUlua_State@@@Z),该符号在函数 _main 中被引用


    4.将lua.c中的main函数修改为lua_main,将luac.c中的main函数修改为luac_main;

    5.直接编译,生成lualib.lib静态库。


    四.lua静态库的使用


    1.新建一个项目,引入lua的头文件和静态库

    2.编写luaTest.cpp:

    #include <stdio.h>
    #include <stdlib.h>
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
    #include "luaconf.h"
    
    
    int main(int argc, char* argv[])
    {
    	lua_State* L = luaL_newstate();
    	luaL_openlibs(L);
    	luaL_dofile(L, "D://WorkSpace//Lua//test.lua");
    	lua_close(L);
    	system("pause");
    	return 0;
    }


    3.再编写一个test.lua脚本

    function show()  
        local b = {}  
        local index  
          
        for index = 1,10,2 do  
            print(index)  
        end  
    end  
      
    show()


    4.编译运行后,即可显示C++调用该lua脚本的结果:



    就这样,愉快的入门Lua了,哈哈~当然Lua如此流行,必定有他更多的强人之处,后面工作中如果遇到可深入学习,语法稍微花点时间浏览下,多用用就熟悉了。

    最后,上一张Log~






  • 相关阅读:
    在网上如何找靠谱的兼职?
    Amphorae 与 Octavia Worker 的安全通信实现
    idea遇到XXXXXXXX.java文件上出现小叉号
    2019创业做哪方面,有什么好的建议吗?
    投资理财财经 现在每个月可以抽出2000元的闲钱,投资什么项目比较好?
    开水果蔬菜超市利润大吗?
    理财能不能发家致富?
    不想打工了,手里有10万,想回农村老家创业,却不知道做什么,请各位指点迷津,谢谢?
    为什么很多人说现在做什么生意都不好做?
    ylbtech-SubwayNav(地铁线路导航)-数据库设计
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3162930.html
Copyright © 2020-2023  润新知