早前就用過LUA ,只是局部的小項目使用,忽然興起想要寫一些關於LUA 的 文章,記錄曾經學習過的點點滴滴。javascript
這裏我使用的是LUA5.2做爲 案例html
lua作爲輕量級腳本語言已經被普遍應用到應用軟件以及遊戲開發中,相比Perl以及python lua的內核 只有100KB左右前端
能夠很容易嵌入到語言級別 就好像語言自己的功能同樣java
如下來自百度全科:python
Lua還具備其它一些特性:同時支持面向過程(procedure-oriented)編程和函數式編程(functional programming);自動內存管理;只提供了一種通用類型的表(table),用它能夠實現數組,哈希表,集合,對象;語言內置模式匹配;閉包(closure);函數也能夠看作一個值;提供多線程(協同進程 [4] ,並不是操做系統所支持的線程)支持;經過閉包和table能夠很方便地支持面向對象編程所須要的一些關鍵機制,好比數據抽象,虛函數,繼承和重載等。linux
關於什麼是閉包?以及如何使用閉包在下面這邊文章中有 javascript對應的閉包問題。相信不少前端工程師並不陌生編程
閉包因爲優缺點一直都是對半存在因此不少人是不建議程序中使用閉包的。windows
http://www.cnblogs.com/jeffwongishandsome/archive/2009/05/17/1458405.html 關於閉包的介紹 數組
廢話很少說,要使用LUA首先就要編譯 LUA的內核,linux下至關簡單 前端工程師
make
make install 就完事
windows下編譯過程以下
若是你要編譯靜態庫?
vs2010下首先建立以下 項目,記住去掉預編譯頭,由於lua是用C ,混合C/C++會形成預編譯頭衝突
建立不適用預編譯頭的 靜態庫 ,
導入lua代碼到項目文件,選擇你的lua代碼導入 直接生成便可
若是你要編譯動態庫?
基本步驟同上相同 你在建立的時候建立一個dll項目 , 或者 直接修改項目屬性 生成dll
你如今編譯是編譯不過的 ?你要去掉你的預編譯選項!!! 不使用項目預編譯頭
這個時候你編譯 OK經過了 也生成了 DLL ,那麼問題來了 如今 咋沒有生成.lib輸入庫呢!!!
實際上發現LUA內核導出函數都被聲明爲LUA_API開頭
你須要添加幾個預編譯定義
LUA_BUILD_AS_DLL 這個告訴預處理器 代碼按照DLL編譯 而且定義導入導出
LUA_CORE 這個告訴預處理器 LUA_API 宏添加 上 dllexport導出定義 若是不添加就是直接使用dllimport
源代碼以下
1 #if defined(LUA_BUILD_AS_DLL) /* { */ 2 3 #if defined(LUA_CORE) || defined(LUA_LIB) /* { */ 4 #define LUA_API __declspec(dllexport) 5 #else /* }{ */ 6 #define LUA_API __declspec(dllimport) 7 #endif /* } */ 8 9 #else /* }{ */ 10 11 #define LUA_API extern 12 13 #endif /* } */
OK 到這裏 你的LUA內核已經編譯完了 能夠開始學習LUA了