輕量級語言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~






 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM