当前位置 : 主页 > 网络编程 > lua >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
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 }

网友评论