解析LUA腳本語言基本使用方法
LUA腳本語言基本使用方法是本文要將介紹的內容,主要是來學習Lua腳本語言的使用方法,具體內容來看本文詳解。我也只是用了它1天,的確很簡單,但又功能強大,能讓你的程序特別富有彈性. 隨便學一兩下吧,就已經很有用了,一起來吧 LUA庫去網上下載吧,這里就不上傳.
先要把下邊這些語句加入到VC中的頭文件,一般是加到StdAfx.h中
- extern "C" {
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- #pragma comment(lib, "lualib.lib")
- #pragma comment(lib, "lua.lib")
- }
然后一般來說都使用一個全局的LUA庫定義的這個東西
- lua_State* g_Lua;
并且在你的工程處初始化時也給LUA初始化
- g_Lua = lua_open(); **加這句
- /* load Lua base libraries */ 網上一些教材中這么寫的
- lua_baselibopen(g_Lua); 不過我這簡單的例子中不用到這些也行
- lua_tablibopen(g_Lua);
- lua_iolibopen(g_Lua);
- lua_strlibopen(g_Lua);
- lua_mathlibopen(g_Lua);
緊接著聲明接口函數,注冊上函數
- lua_register(g_Lua, "Message", myMessage);
好,初始化部分完了,我們看看接口函數的寫法。
函數必須這樣的格式來寫
- static int Func(lua_State *L)
- {
- 靜態型函數,而且必須帶參數為lua_State結構指針
- 返回的值是代表返回的數據個數,比如return 2;就可以代表
- 返回兩個整數啊,浮點數什么的,象LUA的腳本編寫就可以這樣
- i, j = Func() , 這樣就表示可以從Func接口函數中得到兩個返回值了
- return 0;
- }
執行腳本語句可以讀文件,也可以直接讀函數名
我們注冊了
- lua_register(g_Lua, "Message", myMessage);
- static int myMessage(lua_State *L)
- {
- OutputDebugString("OK");
- return 0;
- }
- lua_dofile(g_Lua, strCurPath); //讀文件,必須給出完整的文件路徑名稱
- lua_dostring(g_Lua, "Message()"); //直接讀函數
文件中只要寫上
- Message()
就可以了。
因為腳本可以處理一些復雜的邏輯,通常要把腳本執行給它在線程中運行
- extern lua_State* g_Lua;
- HANDLE ScriptThreadID = NULL;
- UINT __stdcall DoScript(void *lPrarm)
- {
- CString strCurPath;
- GetModuleFileName(AfxGetInstanceHandle(), strCurPath.GetBuffer(MAX_PATH), MAX_PATH);
- strCurPath.ReleaseBuffer();
- int nFind = strCurPath.ReverseFind('\\');
- strCurPathstrCurPath = strCurPath.Left(nFind+1);
- strCurPath += (char*)lPrarm;
- lua_dofile(g_Lua, strCurPath);
- lua_dostring(g_Lua, "Message()"); //直接用函數名來執行
- _endthreadex(0);
- return 0;
- }
- int DoLuaScript(const char* filename)
- {//通過文件來執行腳本
- if (ScriptThreadID)
- TerminateThread(ScriptThreadID, 0);
- ScriptThreadID = (HANDLE)_beginthreadex(NULL, 0, DoScript, (PVOID)filename, 0, 0);
- return 0 ;
- }
- static int myMessage(lua_State *L)
- {
- OutputDebugString("OK");
- return 0;
- }
哈哈,寫完了,不懂得文學,隨便亂寫一通了。
小結:解析LUA腳本語言基本使用方法的內容介紹完了,希望通過本文的學習能對你有所幫助!