VC和LUA混合開發之VC程式呼叫Lua指令碼函式

2022-04-02 20:23:31 字數 1352 閱讀 3965

lua語言以其卓越的可擴充套件性、簡單、高效率和與平台無關性在遊戲領域得到廣泛應用。今天花了一些時間學習vc和lua如何混合開發,編寫了乙個小例程,和大家分享一下這方面的經驗。

首先在首先編寫乙個lua指令碼函式,**如下:

function

add ( x, y )

returnx +

y;end

將這個**儲存為add.lua。

接著我們新建乙個mfc對話方塊工程:calc。這個程式實現簡單整數加法運算。

首先在對話方塊類定義乙個lua虛擬機器指標以及加法運算所需要的變數:

/*** \brief lua 虛擬機器指標。

*/lua_state 

*m_plua;/**

* \brief 加法運算的左運算元。

*/int

m_nleftnum;/**

* \brief 加法運算的左運算元。

*/int

m_nrightnum;/**

* \brief 加法運算的結果。

*/long

m_nresult;

在對話方塊初始化函式

ccalcdlg::oninitdialog

呼叫lua

虛擬機器初始化函式

initluastate

。initluastate

函式的**如下:/*!

*  \brief 初始化lua虛擬機器。

**  \return 無。

*/void

ccalcdlg::initluastate() }

在對話方塊的銷毀訊息響應函式裡關閉lua虛擬機器:

void

ccalcdlg::ondestroy()

在執行加法按鈕的訊息函式裡新增如下**:

void

ccalcdlg::onbnclickedok()

stackdump(m_plua);

m_nresult =(

int)lua_tonumber(m_plua, -1

);        

//函式執行完了,執行結果被壓棧,所以取得最頂端的乙個數就是結果值,-1就是指取棧頂的值

stackdump(m_plua);

lua_pop(m_plua,

1);      

//把值從棧裡清除,pop(彈出)乙個值

stackdump(m_plua); 

updatedata(false);

}編譯環境為:

winxp + sp3

,vs c++2005 + sp1

,程式執行介面如下:

。 1. lua 和c之間的函式呼叫

2. lua整合進mfc**

VC 6 0開發Windows服務程式。

1.此時出現如下圖視窗介面,在此介面中選擇 服務 exe 然後選擇完成按鈕。在接下來的視窗中選擇確定按鈕。則vc完成嚮導並生成相應 效果如下 2 程式的進入點是全域性函式 twinmain,仔細看一下這個函式,我們會發現當我們執行程式時,可以加上引數,例如 winsvr regserver 或者 w...

VC環境和Matlab混合程式設計的實現方法

環境 vc6.0 matlab6.5 就我所知,vc環境和matlab混合程式設計的實現方法主要有兩個,乙個是利用matlab的.m檔案轉換為c 檔案,並生成.dll的方法 另乙個是在vc中呼叫matlab的compile引擎,通過matlab編輯環境進行操作。方法1 在 matlab6.5中將m ...

vc 如何建立程式 構造和繼承

include 定義乙個動物類 class animal void sleep 新增方法 void breathe 新增方法 如果還想定義乙個貓,狗,羊.乙個乙個類的去定義太麻煩了 用繼承的辦法來定義乙個魚的類 那麼animal類有的方法,fish就會繼承 類的繼承,父類 基類 子類 派生類 有三種...