如何使用Lua擴充C/C++應用系列1-轉自bbs.luachina.net

來源:互聯網
上載者:User
Getting Started with Lua
Lua是輕量級的指令碼語言,可以很方便用來擴充C/C++應用程式,下面我們通過幾個簡單的例子來學習Lua如何擴充C/C++的。
首先,你需要安裝Lua,如果你使用windows作業系統你可以下載別人編譯好了的二進位程式即可使用,當然你也可以下載Lua原始碼(http://www.lua.org/download.html)使用你喜歡的編譯器編譯成二進位檔案來使用.如果你使用Linux,你只需要下載原始碼解壓縮檔案檔案後執行make,然後作為root使用者執行make install即可.Unix作業系統,你下載原始碼,通過修改設定檔INSTALL中編譯選項後執行和Linux下類似的操作即可.
當然如果你想在任意路徑下都可以使用Lua,類Unix平台別忘了修改.profile檔案加入你的環境變數;windows下則需要設定環境變數.
第一個程式:
這個程式很短小,但能說明問題,首先說明幾點:
1. 調用lua_open()將建立一個指向Lua解譯器的指標。
2. lua_baselibopen()函數載入Lua庫。
3. 使用lua_dofile()載入指令碼並運行指令碼。
4. lua_close()來關閉Lua指向解譯器的指標。
將下面的代碼儲存為luatest.cpp,如果你喜歡用C而不是C++,需要儲存檔案為luatest.c並且把extern去掉。

代碼:代碼:

#include <stdio.h>extern "C" {    #include "lua.h"    #include "lualib.h"    #include "lauxlib.h"}/* the Lua interpreter */lua_State* L;int main ( int argc, char *argv[] ){    /* initialize Lua */    L = lua_open();    /* load Lua base libraries */    lua_baselibopen(L);    /* run the script */    lua_dofile(L, "test.lua");    /* cleanup Lua */    lua_close(L);    return 0;}

下面是一個簡單的Lua指令碼:
-- simple test

代碼rint "Hello, World!"
確認它能運行。
編譯:
使用你喜歡的編譯器編譯上面儲存的C/C++檔案,下面以Linux為例:
命令列鍵入:
代碼:g++ luatest.cpp -llua -llualib -o luatest
如果沒有錯誤的話,運行程式:
代碼:./luatest
程式應該列印出:Hello, World!
如果你不是Linux作業系統,使用的是Vc++編譯器,你需要:
1. 建立一個新的win32控制台應用工程。
2. 將檔案luatest.cpp添加到你的工程中。
3. 到Project, Settings點擊Link頁。
4. 添加lua+lib.lib到Object/library modules列表中。
5. 按F7編譯器。
運行程式以前,你需要確保lua+lib.dll檔案放在windows可以找到的地方,將這個檔案從C:/Program Files/Lua-5.0拷貝到Visual C++ project目錄,如果編譯沒有錯誤的話,現在可以Ctrl+F5運行程式了。

通過這個例子我們已經踏上了在C/C++中嵌入Lua的第一步,下一篇我們介紹如何在C/C++中調用Lua函數並將函數的傳回值傳遞給C/C++程式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.