參考原文請看:html
Lua學習筆記1:Windows7下使用VS2015搭建Lua開發環境(一)c++
Lua學習筆記2:Windows7下使用VS2015搭建Lua開發環境(二)windows
本篇主要分如下幾個部分:函數
1、下載並利用vs2015編譯lua源碼工具
編譯lua主要編譯三個部分,lua連接庫,lua解釋器,lua編譯器學習
lua連接庫就是靜態庫和動態庫,*.lib和*.dll。有了dll就能夠直接在工程裏開發了。就如示例二中,直接添加了連接,就能夠調用lua函數,並正常運行了。測試
lua.exe是lua的解釋器,能夠直接運行lua腳本;就是編寫了lua文件,好比test.lua,就能夠運行,或者在命令行直接輸入lua,而後按照lua規則寫腳本並直接運行了。lua
luac.exe是lua的編譯工具,生成lua字節碼,以便lua代碼的更快加載和保護lua代碼,同時也能檢查lua腳本的錯誤。spa
2、示例:使用vs2015建立c++,調用lua方法命令行
<1>、首先進入lua官網,下載最新版本的lua源碼。
這裏我將文件解壓放到D盤,D:\lua-5.3.1就是該目錄。
<2>、啓動VS2015建立新的項目
一、選擇【文件】—>【新建】—>【項目】,選擇Win32裏面的Win32控制檯應用程序,這裏我設置名稱爲Lua5.3,其餘配置參數不變,點擊【肯定】按鈕。
二、在應用程序設置嚮導裏面,選擇類型爲【靜態庫】,而後點擊【完成】便可,如圖所示。
三、建立好項目後,在【頭文件】選項上點擊鼠標右鍵,以此選擇【添加】—>【現有項】,而後找到咱們的lua目錄下的src文件夾,這裏個人爲D:\lua-5.3.1\src目錄。而後咱們把src下的全部.h文件添加到頭文件。
四、同上操做,咱們把除去【lua.c】和【luac.c】覺得的全部.c文件都添加到【源文件】。
注意: 須要注意的是 lua.c 和luac.c 不能拷貝進去,這兩個文件不能編譯。如圖所示:
五、配置項目的屬性,在項目的「配置屬性」 界面中操做選擇【C/C++】—> 【常規】—> 【附加包含目錄】,而後輸入咱們的lua源碼路徑D:\lua-5.3.1\src。如圖所示:
而後在【C/C++】—> 【高級】—> 【編譯爲】選擇【編譯爲C代碼(/TC)】,最後肯定。
配置好上面這些後,而後咱們就能夠開始編譯此項目來生成咱們須要的.lib庫文件,如圖。
這裏生成成功了,若是Debug生成失敗你們可使用Release 來生成,生成後的.lib文件咱們能夠在咱們的項目目錄裏查看,如圖所示。
<3>、生成了lib文件,可能已經知足需求了,可是若是須要dll的話,也要生成dll文件。
利用上面已經建好的目錄,右鍵項目->屬性,打開屬性界面,選擇配置屬性-》常規,將配置類型由lib,改爲dll。如圖所示:
點擊應用,肯定。而後從新生成,就能夠生成dll文件。
<4>、編譯lua解釋器lua.exe
將lua.c和luac.c添加進項目的源文件。而後將luac.c的main函數註釋掉。
一樣,將項目的配置類型改成exe,而後右鍵項目從新生成,不出問題會生成lua5.3.exe,但也可能出錯。我遇到的錯誤是:
MSVCRTD.lib(crtexew.obj) : error LNK2019: 沒法解析的外部符號 WinMain
這個錯誤是入口函數不對致使的。
‘
緣由分析
產生這個問題的真正緣由是c++語言運行時找不到適當的程序入口函數,通常狀況下,若是是windows程序,那麼WinMain是入口函數,在VS2010中新建項目爲「win32項目」若是是dos控制檯程序,那麼main是入口函數,在VS2010中新建項目爲「win32控制檯應用程序」。而若是入口函數指定不當,很顯然c++語言運行時找不到配合函數,它就會報告錯誤。
若是咱們須要的是windows程序
Step1.菜單中選擇 Project->Properties, 彈出Property Pages窗口
Step2.在左邊欄中依次選擇:Configuration Properties->C/C++->Preprocessor,而後在右邊欄的Preprocessor Definitions對應的項中刪除_CONSOLE, 添加_WINDOWS.Step3.在左邊欄中依次選擇:Configuration Properties->Linker->System,而後在右邊欄的SubSystem對應的項改成Windows(/SUBSYSTEM:WINDOWS)![]()
![]()
若是咱們須要的是控制檯程序
Step1.菜單中選擇 Project->Properties, 彈出Property Pages窗口
Step2.在左邊欄中依次選擇:Configuration Properties->C/C++->Preprocessor,而後在右邊欄的Preprocessor Definitions對應的項中刪除_WINDOWS, 添加_CONSOLE.
Step3.在左邊欄中依次選擇:Configuration Properties->Linker->System,而後在右邊欄的SubSystem對應的項改成CONSOLE(/SUBSYSTEM:CONSOLE)
’
這裏,咱們須要的是console也就是控制檯程序。所以添加_CONSOLE,並將系統改成CONSOLE以後,就能夠生成lua.exe了。
<5>、生成編譯器luac.exe
將lua.c的main函數註釋掉,解開luac.c的main函數,直接從新生成就是luac.exe了。
到此爲止,咱們的lua5.3就編譯好了,爲方便之後引用,這裏我把他拷貝到lua\bin目錄下,如圖所示。
2、示例
(1)、連接庫示例
一、首先咱們使用vs2015新建一個Win32控制檯應用程序,命名爲LuaTest。
二、配置lua項目頭文件默認路徑
在項目的「配置屬性」 界面中操做選擇【C/C++】—> 【常規】—> 【附加包含目錄】,而後輸入咱們的lua源碼路徑D:\lua-5.3.1\src。如圖所示:
三、爲項目添加.lib庫引用
配置項目的屬性,在項目的「配置屬性」 界面中操做選擇【連接器】—> 【常規】—> 【附加庫目錄】,而後輸入咱們的lua庫文件目錄,這個目錄爲咱們上篇結尾處放置的位置。也就是咱們的lua5.3的源碼目錄,D:\lua-5.3.1\。如圖所示:
配置項目的屬性,在項目的「配置屬性」 界面中操做選擇【連接器】—> 【輸入】—> 【附加依賴庫】位置添加咱們所編譯的Lua5.3.lib庫文件名稱,而後肯定便可。如圖所示:
到此咱們的lua開發環境算是配置好了,下面咱們來測試咱們本身搭建的lua環境。
咱們在源代碼裏建立一個main.lua的文件,如圖所示
建立好後,咱們在裏面輸入打印文本。如圖所示:
而後在LuaTest.cpp主函數裏面,咱們引用標準輸入輸出以及lua的頭文件,而後編寫測試代碼,這裏是打印main.lua文件裏的內容。如圖所示:
到此,咱們完整的lua環境就算搭建好了啊。
<2>、命令行測試
將剛纔bin目錄,配置到個人電腦環境變量path內。敲入cmd命令,將控制檯打開,輸入lua,將出現
輸入print("hello world!")
控制檯會輸出hello world!。這標誌這lua.exe編譯正確。
<3>、luac.exe
有的時候咱們的lua程序不想被別人看到源碼,咱們就編譯成一個.out中間文件,首先建立一個lua程序(新建記事本程序後改後綴名.lua)hello.lua,在裏面寫print("hello world")而後在控制檯切換到luac.exe的目錄下輸入luac hello.lua,會獲得一個luac.out文件,而後在控制檯輸入lua.exe luac.out就能夠輸出Hello World了。
總結工做終於大功告成啦~~~~~