• <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>

               C++ 技術(shù)中心

               :: 首頁(yè) :: 聯(lián)系 ::  :: 管理
              160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

            公告

            鄭重聲明:本BLOG所發(fā)表的原創(chuàng)文章,作者保留一切權(quán)利。必須經(jīng)過(guò)作者本人同意后方可轉(zhuǎn)載,并注名作者(天空)和出處(CppBlog.com)。作者Email:coder@luckcoder.com

            留言簿(27)

            搜索

            •  

            最新隨筆

            最新評(píng)論

            評(píng)論排行榜

            1.lua腳本func.lua如下:

            -- -------------------------------------

            --變量定義
            width=1;
            height=2;


            --lua函數(shù)定義,實(shí)現(xiàn)加法
            function sum(a,b)
                return a+b ;
            end

            --lua函數(shù)定義,實(shí)現(xiàn)字符串相加
            function mystrcat(a,b)
                return a..b ;
            end

            --lua函數(shù)定義,通過(guò)調(diào)用c代碼中的csum函數(shù)實(shí)現(xiàn)加法
            function mysum(a,b)
                return csum(a,b);
            end
            -- -------------------------------------



            2.c/c++代碼如下:

            #include 
            "stdafx.h"
            #include 
            <stdlib.h>
            #include 
            <string.h>
            #include 
            <errno.h>


            extern "C" {
            #include 
            "lua.h"
            #include 
            "lualib.h"
            #include 
            "lauxlib.h"
            }






            #define err_exit(num,fmt,args)  \
                
            do{printf("[%s:%d]"fmt"\n",__FILE__,__LINE__,##args);exit(num);} while(0)


            #define err_return(num,fmt,args)  \
                
            do{printf("[%s:%d]"fmt"\n",__FILE__,__LINE__,##args);return(num);} while(0)


            //lua中調(diào)用的c函數(shù)定義,實(shí)現(xiàn)加法
            int csum(lua_State* l)
            {
                
            int a = lua_tointeger(l,1) ;
                
            int b = lua_tointeger(l,2) ;
                lua_pushinteger(l,a
            +b) ;
                
            return 1 ;
            }


            int main(int argc,char** argv)
            {
                lua_State 
            * l = luaL_newstate() ;        //創(chuàng)建lua運(yùn)行環(huán)境
                
                
            if ( l == NULL ) err_return(-1,"luaL_newstat() failed",1);


                
            int ret = 0 ;
                ret 
            = luaL_loadfile(l,"func.lua") ;      //加載lua腳本文件
                if ( ret != 0 ) err_return(-1,"luaL_loadfile failed",1) ;
                
                
                ret 
            = lua_pcall(l,0,0,0) ;
                
            if ( ret != 0 ) err_return(-1,"lua_pcall failed:%s",lua_tostring(l,-1)) ;

                lua_getglobal(l,
            "width");              //獲取lua中定義的變量
                lua_getglobal(l,"height");
                printf(
            "height:%ld width:%ld\n",lua_tointeger(l,-1),lua_tointeger(l,-2)) ;
                lua_pop(l,
            1) ;                        //恢復(fù)lua的棧

                
            int a = 11 ;
                
            int b = 12 ;
                lua_getglobal(l,
            "sum");               //調(diào)用lua中的函數(shù)sum
                lua_pushinteger(l,a) ;
                lua_pushinteger(l,b) ;
                ret 
            = lua_pcall(l,2,1,0) ;
                
            if ( ret != 0 ) err_return(-1,"lua_pcall failed:%s",lua_tostring(l,-1)) ;
                printf(
            "sum:%d + %d = %ld\n",a,b,lua_tointeger(l,-1)) ;
                lua_pop(l,
            1) ;
                
                
            const char str1[] = "hello" ;
                
            const char str2[] = "world" ;
                lua_getglobal(l,
            "mystrcat");          //調(diào)用lua中的函數(shù)mystrcat
                lua_pushstring(l,str1) ;
                lua_pushstring(l,str2) ;
                ret 
            = lua_pcall(l,2,1,0) ;
                
            if ( ret != 0 ) err_return(-1,"lua_pcall failed:%s",lua_tostring(l,-1)) ;
                printf(
            "mystrcat:%s%s = %s\n",str1,str2,lua_tostring(l,-1)) ;
                lua_pop(l,
            1) ;

                lua_pushcfunction(l,csum) ;         
            //注冊(cè)在lua中使用的c函數(shù)
                lua_setglobal(l,"csum") ;           //綁定到lua中的名字csum

                lua_getglobal(l,
            "mysum");           //調(diào)用lua中的mysum函數(shù),該函數(shù)調(diào)用本程序中定義的csum函數(shù)實(shí)現(xiàn)加法
                lua_pushinteger(l,a) ;
                lua_pushinteger(l,b) ;
                ret 
            = lua_pcall(l,2,1,0) ;
                
            if ( ret != 0 ) err_return(-1,"lua_pcall failed:%s",lua_tostring(l,-1)) ;
                printf(
            "mysum:%d + %d = %ld\n",a,b,lua_tointeger(l,-1)) ;
                lua_pop(l,
            1) ;

                lua_close(l) ;                     
            //釋放lua運(yùn)行環(huán)境
                return 0 ;
            }















            posted on 2013-04-22 16:31 C++技術(shù)中心 閱讀(2299) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C++ 基礎(chǔ)
            久久久久波多野结衣高潮| 久久久久成人精品无码中文字幕| 天天爽天天狠久久久综合麻豆| 欧美麻豆久久久久久中文| 久久99免费视频| 久久免费观看视频| 久久久久亚洲av成人网人人软件 | 亚洲精品无码专区久久同性男| a级毛片无码兔费真人久久| 狠狠久久综合伊人不卡| 日产精品久久久久久久| 久久99精品国产麻豆宅宅| 久久99精品国产麻豆蜜芽| 久久国语露脸国产精品电影| 99久久99久久久精品齐齐| 亚洲国产成人久久一区WWW| 国产精品久久久久久吹潮| 伊人久久大香线焦AV综合影院| 国产精品久久国产精品99盘| 久久久无码精品亚洲日韩蜜臀浪潮 | 99久久精品费精品国产一区二区| 欧美午夜A∨大片久久 | 久久伊人五月丁香狠狠色| 精品多毛少妇人妻AV免费久久| 亚洲伊人久久综合中文成人网| 少妇精品久久久一区二区三区| 伊人久久综合成人网| 亚洲欧洲久久久精品| 亚洲av伊人久久综合密臀性色| 国产精品99久久久精品无码| 一本久久精品一区二区| 偷窥少妇久久久久久久久| 久久久久se色偷偷亚洲精品av| 伊人久久大香线蕉综合Av| 久久精品免费观看| 日韩久久无码免费毛片软件| 久久精品免费一区二区| 久久久久AV综合网成人| 久久电影网一区| 亚洲国产精品久久久天堂| 伊人久久精品线影院|