Lua 在網上有非常多的介紹,就是一個小而巧的語言,可以放入嵌入式系統 也可以在一般的應用上非常強大,這邊主要記錄如何讓Lua加入C++裡頭應用 Lua source code 是以 C 語言下去編寫,在
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 }