VS2008下編譯luabind 0.8.1

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   io   檔案   

【轉】

學了一段時間Lua,顯然直接在項目中使用是很不方便,google了一下,似乎大家都對luabind這個lua封裝類青睞有加,於是我也隨大勢想用用看。
     先做好準備工作,下載了luabin 0.8.1源碼,Boost 1.3.8源碼和lua 5.1.4源碼,編譯環境是VS2008 SP1。之前在網上看到一些文章說這些開源軟體之間的版本依賴比較敏感,可能會有這樣那樣的問題,動手之前有些惶恐。
     幸運的是,編譯過程很順利,如下:
     1.編譯lua 5.1.4
     進入VS2008的命令列工具,定位到lua的源碼目錄下,執行命令etc\luavs.bat,沒什麼問題的話很快就可以編譯好lua,得到lua51.lib和lua51.dll。
     2.編譯luabind
     解壓下載回來的luabind壓縮包,假設解壓到d:\luabind-0.8.1\,Boost解壓到d:\boost 1_38_0\,lua解壓到d:\lua 5.1.4\
     在VS中建立一個靜態庫項目,將d:\luabind-0.8.1\src下的源碼全部添加到項目中,然後在項目中建立luabind和luabind\detail\兩個虛擬資料夾,對應的將d:\luabind-0.8.1\luabind和d:\luabind-0.8.1\luabind\detail下的檔案添加到檔案夾中。
     然後為項目添加附加元件封裝含目錄,右鍵點擊項目節點->屬性->配置屬性->C\C++標籤下,在附加元件封裝含目錄中填入d:\luabind-0.8.1\;d:\boost 1_38_0\k;d:\lua 5.1.4\src\。然後修改項目字元集為多位元組字元集。
     準備就緒,產生項目。在我的環境中編譯很順利,沒有出現任何問題,成功後會得到luabind.lib。

     接下來就按照慣例來寫一個hello world程式作為使用luabind的第一步。
     在VS中建立一個控制台項目,類型為DLL,命名項目為Hello World,然後鍵入以下代碼:

#include "stdafx.h" 2#include <iostream> 3#include <luabind/luabind.hpp> 4 5void greet() 6{ 7    std::cout << "hello world!\n"; 8} 910extern "C" int __declspec(dllexport) init(lua_State* L)11{12    using namespace luabind;1314    open(L);1516    module(L)17    [18        def("greet", &greet)19    ];2021    return 0;22}

注意,在Windows環境下init函數之前是要加__declspec(dllexport)才能將函數匯出的,而luabind的文檔中的環境是linux,預設不用加__declspec(dllexport)也可以匯出(就因為這個折騰了我半天才把hello word成功運行)。
   編譯項目,(記得將luabind.lib和lua51.lib添加到連結選項中:項目屬性->連接器->輸入->附加依賴檔案,加入luabind.lib和lua51.lib)。
   將hello world.dll放到lua51.dll和lua.exe所在的目錄下。
   開啟lua命令列,鍵入:

轉自:http://www.cppblog.com/eros/archive/2009/04/29/81508.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.