在沒有 Scons 的情況下編譯 Toluapp

lua-users home
wiki

在沒有 SCons 的情況下編譯 Tolua++

我想在 tolua++ 網站上發表此文章,但他們沒有 wiki。

tolua++ INSTALL 檔案能讓你了解如何不使用 SCons 來編譯它。這相當簡單,但我想為人們省下 5 (呃... 15) 分鐘來解決這個問題。

使用 GCC/Mingw

我在 mingw 安裝上使用 gcc 3.4.2。但我認為這應該對大多數人來說都能執行,至少對於那些使用 gcc 的人來說是這樣,而且修改幅度也很小。

*首先你必須將目錄轉換到已下載並解壓縮的 tolua++ 資料夾中。

cd <path_to_tolua++_folder>\src\lib
使用的指令為
tolua++_1.0.5\src\lib> gcc -shared -o tolua++.dll *.c <path_to_lua>\Lua502.dll -I ..\..\include -I <path_to_lua>\include
- 這將在 src\lib 目錄中產生一個動態連結函式庫 tolua++.dll。
tolua++_1.0.5-1\src\lib> gcc -c *.c  -I ..\..\include -I <path_to_lua>\include
tolua++_1.0.5-1\src\lib> ar rcsv libtolua++.a *.o
- 這將在 src\lib 目錄中產生一個連結函式庫。
tolua++_1.0.5\src\bin> gcc tolua.c toluabind.c -I ..\..\include -I <path_to_lua>\include -L ..\lib\ -ltolua++ -L <path_to_lua>\Lua502.dll 
- 這假設 libtolua++.a 已在 src\lib 目錄中產生,並在 src\bin 目錄中產生 tolua++ 可執行檔。

注意事項1:如果您使用的是與 lua 靜態函式庫連結,而不是動態函式庫,請將 <path_to_lua>\Lua502.dll 替換成 -L <path_to_lua>\lib -llua .

使用 Visual Studio 2003

DLL

開啟 "檔案->新增專案"功能表。從專案類型方塊清單中選擇 "Visual C++ 專案->Win32"。從範本方塊清單中選擇 "Win32 專案"。輸入"tolua++"作為專案名稱。

當精靈開啟時,請在右側選擇 "應用程式設定"。選擇 "DLL" 並按一下 '完成'

在 Solution Explorer 中的 "source files" 上按一下右鍵,並選擇 "新增->現有項目"。瀏覽到 tolua++\src\lib 目錄的位置。將所有 .c 和 .h 檔案標示出來,並將它們新增到專案中。您也可以選擇從 include 目錄將 tolua++.h 檔案新增到 "header files" 資料夾。

在 Solution Explorer 中的 tolua++ 專案上按一下右鍵並選擇 "屬性"

"C/C++ -> 一般"區段中選擇 "其他包含目錄"選項。瀏覽到 Lua 包含檔案的位置。

"C/C++ -> 預處理器"區段中,新增下列內容:TOLUA_API=extern __declspec(dllexport)"C/C++ -> 預編譯標頭"區段中,關閉預編譯標頭。在 "連結器 -> 一般"區段中,選擇 "其他函式庫目錄"選項,並瀏覽到 Lua .lib 函式庫檔案的位置。在 "連結器 -> 輸入"區段中新增 lua.lib 和 lualib.lib(假設這些是您的 lua 函式庫)。

編譯專案應產生一個 tolua++.dll。

EXE

若要產生 tolua++.exe,請開啟 "檔案->新增專案" 功能表,選擇 Visual C++-> Win32 -> Win32 主控台 專案。將 tolua.c 和 toluabind.c 檔案新增到專案中。

您必須將所有相關的 Lua include 和函式庫目錄新增到此專案中。其處理流程與前述相同。在「C/C++-> 預處理器」區段下,新增:TOLUA_API = extern __declspec(dllimport),...等...

請注意,對 v1.0.92,我必須移 toluabind.c 中出現的 TOLUA_API。

int TOLUA_API tolua_tolua_open (lua_State* tolua_S)
結果為
int tolua_tolua_open (lua_State* tolua_S)

使用 Visual Studio 2005

雖有一些細微差異需要修正,與上述(對於 vs2003)相同範疇的註解大致適用。

請注意,由於 VS 對 c99 支援不佳,因此「EXE」組建中的「toluabind.c」將無法編譯。有許多行看起來如下

... int top; top = lua_gettop(tolua_S); static unsigned char B[] = { ...

這些部分需要變更為

... int top = lua_gettop(tolua_S); static unsigned char B[] = { ...

或類似格式。

已使用 vs2005(無服務套件)和 tolua++ 1.0.91 進行測試。


最近變更· 喜好設定
編輯· 歷程
最後編輯 2013 年 3 月 6 日上午 4:17 GMT (差異)