置頂 輕量級語言Lua入門

2021-09-08 16:45:46 字數 2370 閱讀 6353

作為乙個指令碼愛好者,而且是指令碼(perl)起家的我,一有空就喜歡學習下這些指令碼語言。據說魔獸世界、憤怒小鳥都用到了它,所以今天研究下lua這個叫法有點奇特的指令碼

一.lua簡介

lua 是乙個小巧的指令碼語言。作者是巴西人(好像還沒有接觸過巴西人~)。該語言的設計目的是為了嵌入應用程式中,從而為應用程式提供靈活的擴充套件和定製功能。lua指令碼可以很容易的被c/c++**呼叫,也可以反過來呼叫c/c++的函式,這使得lua在應用程式中可以被廣泛應用。不僅僅作為擴充套件指令碼,也可以作為普通的配置檔案,代替xml,ini等檔案格式,並且更容易理解和維護。

lua由標準c編寫而成,**簡潔優美,幾乎在所有作業系統和平台上都可以編譯,執行。乙個完整的lua直譯器不過200k,在目前所有指令碼引擎中,lua的速度是最快的。這一切都決定了lua是作為嵌入式指令碼的最佳選擇。

參考手冊:       

中文教程(年代有點久遠了,不過語法應該差不多):

我的入門例子:

網上還有個所謂15分鐘入門的教程,也不錯:

三.原始碼編譯:

1.vs2010新建乙個工程,匯入原始碼src資料夾下的所有**;

2.配置:  配置屬性    -->  常規   -->   配置型別   -->  選擇  「靜態庫(.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 #include #include "lua.h"

#include "lualib.h"

#include "lauxlib.h"

#include "luaconf.h"

int main(int argc, char* ar**)

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~

輕量級標記語言

輕量級標記語言是一種時髦的系統語言,它用不同的方式標註文件,並且設計了簡單易讀的語法。事實上,它的語法非常之簡單以至於任何人都能快速的掌握這些標記語言。這類語言最大的優點在於,使用者使用乙個普通的文字編輯器就可以在源文件中方便的輸入注釋文字。這類語言使用簡單的格式以及幾個簡單的特殊字元或字串來標記段...

輕量級語言,h5

html hypertext markup language 輕量級方法僅具有很少的一些規則和慣例,或者說,這些規則和慣例遵守起來很容易。html5繼承了html所有的語法,所以html5與html的差異是以下這些html5的新特性 html 超文字標記語言,像iphone6,iphone7,屬於前...

9 2 Go語言goroutine(輕量級執行緒)

雖然,執行緒池為邏輯編寫者提供了執行緒分配的抽象機制。但是,如果面對隨時隨地可能發生的併發和執行緒處理需求,執行緒池就不是非常直觀和方便了。能否有一種機制 使用者分配足夠多的任務,系統能自動幫助使用者把任務分配到 cpu 上,讓這些任務盡量併發運作。這種機制在 go語言中被稱為 goroutine。...