• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-380  評(píng)論-37  文章-0  trackbacks-0

            轉(zhuǎn):http://www.cnweblog.com/fly2700/archive/2010/02/09/282920.html

            參考http://blog.csdn.net/kun1234567/archive/2007/12/11/1929815.aspx
            第1步:下載
            從官方主頁(yè)www.lua.org下載Lua源代碼,最新版本為5.1.3。(jack-wang注:現(xiàn)在已經(jīng)是5.1.4了)
            解壓之后找到“[Lua]/src”文件夾,這里面就是Lua了,不過(guò)還不能直接使用。

            第2步:編譯lua
            使用任意ANSI C編譯器,在這里使用VS2005編譯LUA。具體步驟如下:
            a.打開(kāi)vs的命令行工具,工具-->visual studio 2005 command prompt
            b.跳轉(zhuǎn)到[Lua]目錄,例如:cd  D:/Program Files/Lua
            c.執(zhí)行:etc\luavs.bat( 注意,是 \ 不是 /,寫(xiě)錯(cuò)了不能執(zhí)行編譯 )
            d.然后lua51.dll, lua51.lib, lua.exe, and luac.exe就生成在 src 路徑下了
            e.在windows環(huán)境變量中把[Lua]\src添加到系統(tǒng)Path中去,

            第3步:創(chuàng)建lua腳本
            下載LuaEdit http://luaforge.net/frs/download.php/1037/LuaEdit_2_5.zip 他是Lua腳本的編輯工具,還可以對(duì)Lua腳本進(jìn)行語(yǔ)法檢測(cè)和調(diào)試。你也可以其他的純文本編輯工具寫(xiě)一個(gè)文件test.lua,注意后面沒(méi)有“;”

            function f ( x, y)
                
            return x + y
            end

            第4步:在C++ 中調(diào)用Lua腳本
            開(kāi)啟VC++6.0環(huán)境創(chuàng)建一個(gè)新文件main.cpp
            // Win32Console.cpp : Defines the entry point for the console application.
            //

            #include 
            "stdafx.h"

            extern "C"
            {
            #include 
            "D:/Lib/Lua/lua.h"
            #include 
            "D:/Lib/Lua/lualib.h"
            #include 
            "D:/Lib/Lua/lauxlib.h"
            }

            #pragma comment( lib ,
            "D:/Lib/Lua/lua51.lib")
            lua_State 
            *L;

            //調(diào)用lua
            double fun( double x, double y )
            {
             
            double ret;
             lua_getglobal( L, 
            "add");        // 獲取全局變量f
             lua_pushnumber( L,x);          // 操作數(shù)壓棧
             lua_pushnumber( L,y);          // 操作數(shù)壓棧
             lua_call( L, 21);            // 執(zhí)行:2個(gè)操作數(shù),1個(gè)返回值
             
            //lua_pcall( L, 2, 1, 0);      // 保護(hù)模式的lua_call,0為錯(cuò)誤處理碼。具體應(yīng)用暫時(shí)不明,在使用手冊(cè)中有粗略介紹
             ret = lua_tonumber( L, -1);    // 將棧頂元素轉(zhuǎn)換成數(shù)字并賦值給ret
             lua_pop( L, 1);                // 從棧中彈出一個(gè)元素
             return ret;
            }


            //被lua調(diào)用的方法
            static int average(lua_State *L2)
            {
                
            /* get number of arguments */
                
            int n = lua_gettop(L2);
                
            double sum = 0;
                
            int i;
                
            /* loop through each argument */
                
            for (i = 1; i <= n; i++)
                
            {
                
            /* total the arguments */
                sum 
            += lua_tonumber(L2, i);
                }

                lua_pushnumber(L, sum 
            / n);
                
            /* push the sum */
                lua_pushnumber(L, sum);
                
            /* return the number of results */
                printf(
            "average called. [ok]\n");
                
            return 2;
            }

            //==============================================
            // Main Functions
            //==============================================
            int main( void)
            {
             
            int error;
             L 
            = lua_open();          // 創(chuàng)建Lua接口指針(借用DX的術(shù)語(yǔ),本質(zhì)是個(gè)堆棧指針)
             luaopen_base(L);     // 加載Lua基本庫(kù)
             luaL_openlibs(L);     // 加載Lua通用擴(kuò)展庫(kù)
            /*
             可能有的文章會(huì)采用以下寫(xiě)法,手工控制加載哪些庫(kù):
             luaopen_table(L);     // 加載table庫(kù)
             luaopen_io(L);           // 加載IO庫(kù)
             luaopen_string(L);    // 加載string庫(kù)
             luaopen_math(L);     // 加載math庫(kù)
             經(jīng)過(guò)測(cè)試,luaopen_io(L);該句執(zhí)行異常,可能跟Lua的IO庫(kù)有關(guān)系。具體原因暫時(shí)沒(méi)有追究,將來(lái)如果有機(jī)會(huì)弄清楚,再回頭來(lái)闡述。
            */

             
             
            /* load the script */
             lua_register(L, 
            "average", average);
             error 
            = luaL_dofile(L, "hellow.lua");    // 讀取Lua源文件到內(nèi)存編譯

             
            double ret = fun( 103.4);                // 調(diào)用模版函數(shù)f
             printf( "ret = %f\n", ret);                // 輸出結(jié)果,C語(yǔ)言的東西,跟Lua無(wú)關(guān)
             lua_close( L);
             
            return 1;
            }


            創(chuàng)建一個(gè)hellow.lua文件和main.cpp放在一起,寫(xiě)入以下內(nèi)容
            function add ( x, y)    
                file 
            = assert(io.open("data.txt""w"))
                file:write(
            "abcde\n")
                file:write(
            "ok!\n")
                file:close()

                
            --DataDumper(1,2,3,4)
                file 
            = assert(io.open("data.txt""r"))
                str 
            = file:read("*a")
                io.write(str)
                io.write(
            "\n")
                
                avg, sum 
            = average(102003000)
                print(
            "The average is ", avg)
                print(
            "The sum is ", sum)
                
                
            return x + y
            end
            posted on 2011-09-29 02:34 小王 閱讀(5098) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 游戲服務(wù)器端開(kāi)發(fā)
            久久婷婷五月综合国产尤物app | 久久露脸国产精品| 久久久久亚洲精品中文字幕| 精品久久久久久久国产潘金莲| 久久精品亚洲中文字幕无码麻豆| 国产91久久综合| 久久乐国产综合亚洲精品| WWW婷婷AV久久久影片| 性做久久久久久免费观看| 亚洲国产精品无码久久久不卡 | 久久久婷婷五月亚洲97号色| 欧美久久精品一级c片片| 亚洲精品无码久久久| 久久综合丁香激情久久| 亚洲香蕉网久久综合影视| 丰满少妇人妻久久久久久4| 无码人妻久久一区二区三区| 久久精品无码一区二区app| 国产成人综合久久综合| 一本色道久久HEZYO无码| 99热都是精品久久久久久| 久久香蕉国产线看观看精品yw| 亚洲国产成人久久综合野外| 99久久99久久精品国产| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 久久国产乱子伦精品免费午夜| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 国产福利电影一区二区三区久久久久成人精品综合 | 久久棈精品久久久久久噜噜| 欧美久久久久久| 久久婷婷五月综合色99啪ak| 久久综合九色综合欧美狠狠| 久久夜色精品国产噜噜噜亚洲AV| 久久久精品国产| 99久久香蕉国产线看观香| 欧美综合天天夜夜久久| 久久国产高清字幕中文| 久久久九九有精品国产| 97精品国产91久久久久久| 国产精品一久久香蕉国产线看观看| 亚洲国产精品久久久天堂|