自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析LUA腳本語言基本使用方法

移動(dòng)開發(fā) iOS
LUA腳本語言基本使用方法是本文要將介紹的內(nèi)容,主要是來學(xué)習(xí)Lua腳本語言的使用方法,具體內(nèi)容來看本文詳解。

LUA腳本語言基本使用方法是本文要將介紹的內(nèi)容,主要是來學(xué)習(xí)Lua腳本語言的使用方法,具體內(nèi)容來看本文詳解。我也只是用了它1天,的確很簡(jiǎn)單,但又功能強(qiáng)大,能讓你的程序特別富有彈性. 隨便學(xué)一兩下吧,就已經(jīng)很有用了,一起來吧 LUA庫(kù)去網(wǎng)上下載吧,這里就不上傳.

先要把下邊這些語句加入到VC中的頭文件,一般是加到StdAfx.h中

  1. extern "C" {   
  2. #include "lua.h"   
  3. #include "lualib.h"   
  4. #include "lauxlib.h"   
  5. #pragma comment(lib, "lualib.lib")   
  6. #pragma comment(lib, "lua.lib")   
  7. }  

然后一般來說都使用一個(gè)全局的LUA庫(kù)定義的這個(gè)東西

  1. lua_State* g_Lua;  

并且在你的工程處初始化時(shí)也給LUA初始化

  1. g_Lua = lua_open();    **加這句   
  2.  
  3.    /* load Lua base libraries */    網(wǎng)上一些教材中這么寫的   
  4.      lua_baselibopen(g_Lua);        不過我這簡(jiǎn)單的例子中不用到這些也行   
  5.    lua_tablibopen(g_Lua);   
  6.    lua_iolibopen(g_Lua);   
  7.    lua_strlibopen(g_Lua);   
  8.    lua_mathlibopen(g_Lua);  

緊接著聲明接口函數(shù),注冊(cè)上函數(shù)

  1. lua_register(g_Lua, "Message",    myMessage);  

好,初始化部分完了,我們看看接口函數(shù)的寫法。

函數(shù)必須這樣的格式來寫

  1. static int Func(lua_State *L)   
  2. {   
  3.    靜態(tài)型函數(shù),而且必須帶參數(shù)為lua_State結(jié)構(gòu)指針   
  4.    返回的值是代表返回的數(shù)據(jù)個(gè)數(shù),比如return 2;就可以代表   
  5.    返回兩個(gè)整數(shù)啊,浮點(diǎn)數(shù)什么的,象LUA的腳本編寫就可以這樣   
  6.    i, j = Func() , 這樣就表示可以從Func接口函數(shù)中得到兩個(gè)返回值了   
  7.  
  8.    return 0;   
  9. }  

執(zhí)行腳本語句可以讀文件,也可以直接讀函數(shù)名
 
我們注冊(cè)了

  1. lua_register(g_Lua, "Message",    myMessage);   
  2.  
  3. static int myMessage(lua_State *L)   
  4. {   
  5.    OutputDebugString("OK");   
  6.      return 0;   
  7. }   
  8.  
  9. lua_dofile(g_Lua, strCurPath); //讀文件,必須給出完整的文件路徑名稱   
  10. lua_dostring(g_Lua, "Message()"); //直接讀函數(shù)  

文件中只要寫上

  1. Message()  

就可以了。

因?yàn)?strong>腳本可以處理一些復(fù)雜的邏輯,通常要把腳本執(zhí)行給它在線程中運(yùn)行

  1. extern lua_State* g_Lua;   
  2.  
  3. HANDLE ScriptThreadID = NULL;   
  4.  
  5. UINT __stdcall DoScript(void *lPrarm)   
  6. {   
  7.    CString strCurPath;   
  8.    GetModuleFileName(AfxGetInstanceHandle(), strCurPath.GetBuffer(MAX_PATH), MAX_PATH);   
  9.    strCurPath.ReleaseBuffer();   
  10.    int nFind = strCurPath.ReverseFind('\\');   
  11.    strCurPathstrCurPath = strCurPath.Left(nFind+1);   
  12.    strCurPath += (char*)lPrarm;   
  13.  
  14.    lua_dofile(g_Lua, strCurPath);   
  15.    lua_dostring(g_Lua, "Message()"); //直接用函數(shù)名來執(zhí)行   
  16.  
  17.    _endthreadex(0);   
  18.    return 0;   
  19. }   
  20.  
  21. int DoLuaScript(const char* filename)   
  22. {//通過文件來執(zhí)行腳本   
  23.    if (ScriptThreadID)   
  24.        TerminateThread(ScriptThreadID, 0);   
  25.    ScriptThreadID = (HANDLE)_beginthreadex(NULL, 0, DoScript, (PVOID)filename, 0, 0);   
  26.       
  27.    return 0 ;   
  28. }   
  29.  
  30. static int myMessage(lua_State *L)   
  31. {   
  32.    OutputDebugString("OK");   
  33.      return 0;   
  34. }  

哈哈,寫完了,不懂得文學(xué),隨便亂寫一通了。

小結(jié):解析LUA腳本語言基本使用方法的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-22 18:00:53

Lua語言

2011-08-25 09:55:27

2011-08-29 15:58:51

Lua函數(shù)

2011-08-22 16:59:28

Lua

2011-08-25 11:02:04

2011-08-25 10:40:21

Lua游戲

2011-08-22 17:41:23

LUA 腳本 語言

2011-08-22 18:08:09

Lua腳本

2011-08-24 13:32:17

2011-06-22 14:07:42

Lua

2011-08-25 14:26:40

LUA數(shù)據(jù)文件

2011-09-07 09:51:27

Javascript

2010-02-26 13:03:31

Python腳本語言

2011-07-06 16:54:44

ASP

2010-02-24 14:04:32

Python腳本語言

2009-06-10 08:41:15

Linux腳本語言

2010-10-08 14:27:25

JavascriptSplit

2011-06-14 10:18:58

QThread Qt 線程

2010-07-01 09:29:15

Java腳本語言javax.scrip

2013-07-25 14:12:53

iOS開發(fā)學(xué)習(xí)UITableView
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)