1. 程式人生 > >(Lua) C++ 加入 Lua 環境擴充應用強度

(Lua) C++ 加入 Lua 環境擴充應用強度

news eas close color img src win32 open space

Lua 在網上有非常多的介紹,就是一個小而巧的語言,可以放入嵌入式系統

也可以在一般的應用上非常強大,這邊主要記錄如何讓Lua加入C++裡頭應用

Lua source code 是以 C 語言下去編寫,在網上查編譯完大概有200K的大小

對於應用在STM32F407 感覺綽綽有餘 F4的Flash大小有1M很足夠我使用。

主要想利用他在嵌入式系統上面應用,由於涉世未深還是先從PC上慢慢學習體驗

先從官方網站下載 Lua 5.3.5 目前的最新版本,第一步就是將 C code編譯成 DLL提供給 C++使用,我的環境是 Visual Studio 2013。

在開始編譯之前 先把 lua.c luac.c

兩個檔案移除,潛潛的描述一下原因的話我想是這2份檔案裡頭 都有一個 main ,所以我們不需要他們。

接下來把剩下的檔案複製起來放到 Visual Studio 相關的 Project。

我的習慣是 src 和 inc 分開放看起來比較整齊。

技術分享圖片

接下來很簡單在 VS 上頭開一個 empty (空的) Win32 project,在把屬性改成我們想要的dll 跟 靜態函式庫 (static Library)

技術分享圖片

在來將 inc 的路徑加入到屬性

技術分享圖片

在來就可以直接 build 一個想要的 Lua API 跟 lib了

技術分享圖片

在Release 資料夾中就可以找到需要的 Lua DLL,在將 DLL 加入需要的 VS 就可以暢快的學習Lua了

技術分享圖片

以下簡單的範例程式就可以測試Lua能否使用了

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <iostream>
 4 
 5 extern "C"{
 6     #include "lua.h"
 7     #include "lauxlib.h"
 8     #include "lualib.h"
 9 }
10 
11 using namespace std;
12 
13 int main(int argc, const char *argv[])
14 {
15     //
cout << "lua test platform!!!" << endl; 16 string scriptnema = "main.lua"; 17 int luaError; 18 lua_State *L = luaL_newstate(); 19 20 if (L == NULL) 21 { 22 cout << "luaL_newstate faile !!!" << endl; 23 return -1; 24 } 25 26 luaL_openlibs(L); 27 luaL_dofile(L, scriptnema.c_str()); 28 29 lua_close(L); 30 system("pause"); 31 return 0; 32 }

技術分享圖片

(Lua) C++ 加入 Lua 環境擴充應用強度