在[46]腳本語言Lua的特色是什麼?(同Python,Ruby,Perl等對比)這篇文章中,咱們談到了能夠將腳本語言Lua和C++結合起來解決問題,這樣既能夠利用C++性能高的特色來執行大量的運算,又能夠利用腳本語言Lua的靈活性來表達複雜的邏輯,這樣各取所長,各自發揮本身的特色,作到了揚長避短。而這種混合編程的方式,也許是將來軟件開發的一個趨勢。
既然如此,那麼如何進行C++和Lua的混合編程呢?
A:
實現C++和Lua混合編程的第一步,是在計算機上編譯並安裝Lua。
編譯
Lua是以源代碼的形式發佈的,因此咱們須要下載其源代碼本身編譯。你能夠從這裏下載Lua 5.2.1,也能夠到Lua的官方網站下載最新版本。
下載獲得源代碼後,就是編譯了。整個過程很是簡單。在這裏,我使用的是MinGW編譯器,若是你安裝的是其餘編譯器,能夠參照Lua的文檔,其中也有詳細的說明。
執行MinGW平臺的編譯
F:\code\lua>make mingw
cd src && make mingw
make[1]: Entering directory `F:/code/lua/src’
make 「LUA_A=lua52.dll」 「LUA_T=lua.exe」 \
「AR=gcc -shared -o」 「RANLIB=strip –strip-unneeded」 \
「SYSCFLAGS=-DLUA_BUILD_AS_DLL」 「SYSLIBS=」 「SYSLDFLAGS=-s」 lua.exe
測試編譯是否成功
F:\code\lua>make test
src/lua -v
Lua 5.2.1 Copyright (C) 1994-2012 Lua.org, PUC-Rio
若是你看到上面的版本信息輸出,就表示你編譯成功了。
固然,若是你要是嫌上面的步驟麻煩,或者是沒有合適的編譯器,能夠直接從其官方網站上下載二進制文件使用。
安裝
編譯完成後,就是安裝了。原本Lua提供的Makefile能夠同時完成安裝的,但是這個文件在Windows平臺上使用有問題,只好本身手動安裝了,其實也很簡單。
在我這裏,Lua主要是配合MinGW使用,因此我決定將他們安裝在一塊兒。
首先,複製剛剛編譯獲得的lua.exe和luac.exe以及lua52.dll到MinGW的bin目錄下,若是你想將Lua安裝到其餘目錄,是須要將這三個文件複製到該目錄,並將該目錄添加到PATH路徑便可。
這裏,咱們完成了Lua解釋器的安裝,由於咱們要進行C++和Lua的混合編程,咱們還須要安裝與之相關的頭文件和庫文件。
首先將src目錄下的
luaconf.h – Lua配置說明
lua.h – Lua C API支持
lauxlib.h – Lua輔助庫(高級支持)
lualib.h – Lua標準庫(提供訪問Lua語言標準庫的能力)
lua.hpp – C++版本的lua頭文件。
這五個文件複製到MinGW的頭文件目錄下。其中前兩個是必須的,僅拷貝lua.h會致使編譯錯誤(找不到配置說明文件luaconf.h),第三個一般也是必須的,它提供了一系列以luaL_開頭的函數和宏,方便了Lua的使用(好比參數檢測,以及與Lua兼容的字符串緩衝luaL_Buffer),第四個一般來講不重要,它提供了載入標準庫的指令(luaL_openlibs),以及標準庫的標準名字的宏。另外還有Lua中文件IO的類型識別方式。最後一個供C++包含,其實只是簡單地載入了前三個庫,並加了extern 「C」修飾而已。(感謝sw老師補充)
而後,將src目錄下的liblua.a複製到MinGW的庫文件目錄(這裏只是爲了圖省事,實際上他們能夠在任何目錄,不過編譯器須要進行必定的設置,以便找到這些文件)
到這裏,咱們的Lua就編譯安裝完成了,下一個Lua的hello world看看吧
建立一個hello.lua的文本文件,編輯其內容以下:
–Lua的Hello World
print(「Hello World」)
而後,在命令行窗口以以下的命令執行這個腳本
lua hello.lua
若是在屏幕上看到了Hello World的輸出,就表示咱們的Lua已經能夠正常工做了。
然而,咱們的目的並非執行Lua腳本,而是C++和Lua的混合編程,因此接下來咱們將介紹Lua腳本的另一種執行方式——嵌入C++程序執行。請看下集[49]一半是性能,一半是靈活——C++和Lua混合編程(如何在C++中執行Lua腳本?)編程