青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

的筆記

隨時隨地編輯

lua-c筆記

參考文檔

lua所有的一切盡在一本小冊:Lua 5.0 Reference Manual 
   pdf: http://www.lua.org/ftp/refman-5.0.pdf.
   html:http://www.lua.org/manual/5.1/

LuaPlus Callback Dispatcher 1.00   
   http://wwhiz.com/LuaPlus/LuaPlusCallDispatcher.html

LuaPlus for Lua 5.01 Distribution   
   http://wwhiz.com/LuaPlus/LuaPlus.html

Lua:Tutorials:Scripting with LuaPlus and Cpp   
   http://www.gpwiki.org/index.php/Lua:Tutorials:Scripting_with_LuaPlus_and_Cpp
lua維基
   http://zh.wikipedia.org/wiki/Lua 
   http://en.wikipedia.org/wiki/Lua_(programming_language)

C++中使用Lua腳本 和lua中調用c的方法
   http://www.cnweblog.com/fly2700/archive/2010/02/09/282920.html

Calling C++ Functions From Lua
http://gamedevgeek.com/tutorials/calling-c-functions-from-lua/


設置lua環境

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


load script

//--test.lua
//function add(x,y)
//return x+y
//end

//print("1+2" , add(1,2))

int _tmain(int argc, _TCHAR* argv[])
{
    lua_State
* L = lua_open();    
    luaopen_base(L);    
    
/* load the script */
    luaL_dofile(L, 
"test.lua");    // 讀取Lua源文件到內存編譯
    lua_close( L);
    
return 0;
}

 

call lua

//--hellow.lua
//function add(x,y)
//print("x+y=" , x+y );
//return
//end
//
//--print(dddd)
//add(1 , 2)

double fun(lua_State* L ,  double x, double y )
{
    
double ret;
    lua_getglobal( L, 
"add");      
    lua_pushnumber( L,x);         
    lua_pushnumber( L,y);         
    lua_call( L, 
21);          
    ret 
= lua_tonumber( L, -1);    
    lua_pop( L, 
1);              
    
return ret;
}

int _tmain(int argc, _TCHAR* argv[])
{
    
int error;
    
// 創建Lua接口指針
    lua_State* L = lua_open();    
    
// 加載Lua基本庫
    luaopen_base(L);    
    
// 加載Lua通用擴展庫
    luaL_openlibs(L);     

    
/* load the script */
    error 
= luaL_dofile(L, "test.lua");

    srand( time(
0) );
    
while(1)
    
{
        
int alpha = rand();
        
int beta = rand();
        
int ret = fun(L , alpha , beta );
        printf(
"%d " , ret);
    }


    lua_close( L);
    
return 0;
}

 

lua call c

//--luacallc.lua
//avg = average(20 , 30 , 4)
//print("lua got average value:" , avg)

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


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


int _tmain(int argc, _TCHAR* argv[])
{
    
int error;
    
// 創建Lua接口指針
    lua_State* L = lua_open();    
    
// 加載Lua基本庫
    luaopen_base(L);    
    
// 加載Lua通用擴展庫
    luaL_openlibs(L);     

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

    lua_close( L);
    
return 0;
}

 

lua call C++ object(lua way)

//--luacallcplusfun.lua
//
//o = obj();
//o:set( 50 );
//o:get();
//print("lua got average value:" , avg)

class obj
{
public:
    obj() : val( 
0 ) {}

    
void   setdouble v )
    

        val 
= v;
    }

    
double getvoid )  
    

        
return val;
    }


private:
    
double val;
}
;

class lua_bind
{
public:
    
static void reg( lua_State* L )
    
{
        lua_newtable( L );
        
int tbl = lua_gettop( L );

        luaL_newmetatable( L, 
"obj" );
        
int meta_tbl = lua_gettop( L );

        lua_pushliteral( L, 
"__metatable" );
        lua_pushvalue( L, tbl );
        lua_settable( L, meta_tbl );

        lua_pushliteral( L, 
"__index" );
        lua_pushvalue( L, tbl );
        lua_settable( L, meta_tbl );

        lua_pushliteral( L, 
"__gc" );
        lua_pushcfunction( L, gc );
        lua_settable( L, meta_tbl );

        lua_pop( L, 
1 );
        luaI_openlib( L, 
0, functions, 0 );

        lua_pop( L, 
1 );
        lua_register( L, class_name, build );
    }


    
static int build( lua_State* lua )
    
{
        obj
* p = new obj();
        
*void** )( lua_newuserdata( lua, sizeofvoid* ) ) ) = p;

        luaL_getmetatable( lua, class_name );
        lua_setmetatable( lua, 
-2 );

        cout 
<< "build object, val is 0" << endl;
        
return 1;
    }


    
static int gc( lua_State* lua )
    
{
        obj
* p = ( obj* )( *void** )( lua_touserdata( lua, 1 ) ) );
        delete p;

        cout 
<< "object gc" << endl;
        
return 0;
    }


    
static int set_val( lua_State* lua )
    
{
        obj
* p = ptr( lua, 1 );
        
double val = luaL_checknumber( lua, 2 );

        p
->set( val );

        cout 
<< "set value to " << val << endl;
        
return 0;
    }


    
static int get_val( lua_State* lua )
    
{
        obj
* p = ptr( lua, 1 );
        
double val = p->get();

        lua_pushnumber( lua, val );

        cout 
<< "get value is " << val << endl;
        
return 1;
    }


    
static obj* ptr( lua_State* lua, int narg )
    
{
        luaL_checktype( lua, narg, LUA_TUSERDATA );
        
void* ud = luaL_checkudata( lua, narg, class_name );

        
if( ud )
            
return *( obj** )ud;

        luaL_typerror( lua, narg, class_name );
        
return 0;
    }


    
static const char     class_name[];
    
static const luaL_reg functions[];
}
;

const char lua_bind::class_name[] = "obj";

const luaL_reg lua_bind::functions[] =
{
    
"set", lua_bind::set_val },
    
"get", lua_bind::get_val },
    
{     0,                 0 }
}
;

int _tmain(int argc, _TCHAR* argv[])
{
    lua_State
* L = lua_open();    

    lua_bind::reg( L );

    luaL_dofile( L, 
"luacallcplusobj.lua" );

    lua_close( L);

    
return 0;
}

 

lua call C++ object(luaplus way)

 

posted on 2011-07-01 19:55 的筆記 閱讀(1282) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            韩国在线视频一区| 久久综合九色综合欧美狠狠| 欧美性开放视频| 亚洲一区二区三区午夜| 一区二区三区高清在线| 国产精品电影在线观看| 欧美一区三区二区在线观看| 久久成人久久爱| 亚洲国产日韩一区| 日韩小视频在线观看专区| 国产精品欧美经典| 蜜臀av性久久久久蜜臀aⅴ| 欧美日本亚洲| 久久婷婷国产综合精品青草| 久久久久亚洲综合| 一区二区三区精品| 欧美一级在线视频| 日韩午夜av电影| 亚洲综合欧美日韩| 亚洲激情一区二区| 亚洲一区二区三区影院| 亚洲第一久久影院| 亚洲视频一二区| 亚洲国产精品国自产拍av秋霞 | 亚洲欧洲日本一区二区三区| 欧美1区2区视频| 午夜宅男欧美| 欧美精品一二三| 久久久水蜜桃| 国产精品99免费看 | 激情久久中文字幕| 亚洲国产日韩欧美一区二区三区| 国产欧美精品日韩精品| 国产精品视频导航| 麻豆精品视频在线观看| 欧美调教视频| 蜜桃久久精品一区二区| 国产精品乱码妇女bbbb| 亚洲福利视频一区二区| 国产一区二区精品丝袜| 一本色道久久综合亚洲精品小说 | 精久久久久久| 玉米视频成人免费看| 亚洲午夜久久久久久久久电影院 | 久久久国产午夜精品| 欧美日韩精品在线观看| 激情成人综合| 在线亚洲观看| 亚洲久久在线| 欧美xxx在线观看| 另类图片国产| 国语自产偷拍精品视频偷| 亚洲图片欧洲图片av| 一本色道久久88亚洲综合88 | 卡通动漫国产精品| 国产精品入口66mio| 日韩亚洲精品电影| 日韩午夜精品| 欧美精品成人| 亚洲日本激情| 一区二区三区国产盗摄| 一区二区高清在线| 国产手机视频一区二区| 欧美午夜a级限制福利片| 亚洲综合电影一区二区三区| 欧美日本韩国一区二区三区| 91久久久久久国产精品| 一本色道久久综合精品竹菊| 欧美激情亚洲精品| 日韩一二在线观看| 午夜视频在线观看一区二区三区 | 亚洲国产精品成人一区二区 | 久久一二三区| 在线观看视频一区| 免费不卡在线观看av| 亚洲三级性片| 亚洲女性喷水在线观看一区| 国产精品嫩草影院av蜜臀| 午夜精品福利电影| 久久久久一区二区三区四区| 在线观看日韩精品| 欧美精品v国产精品v日韩精品| 亚洲精品免费一二三区| 亚洲综合色在线| 国产视频欧美视频| 老鸭窝毛片一区二区三区| 亚洲高清三级视频| 亚洲免费一级电影| 亚洲成在线观看| 欧美人体xx| 欧美亚洲日本国产| 亚洲国产cao| 先锋影音国产一区| 亚洲风情在线资源站| 欧美人与禽性xxxxx杂性| 亚洲视频日本| 欧美高清视频一区| 午夜精品影院| 亚洲三级视频| 国产夜色精品一区二区av| 欧美护士18xxxxhd| 欧美影院在线播放| 亚洲免费黄色| 免费人成网站在线观看欧美高清| 中文日韩在线视频| 亚洲二区视频在线| 国产精品视频网站| 欧美激情二区三区| 久久久久看片| 亚洲欧美日韩综合国产aⅴ| 亚洲人体一区| 美国十次了思思久久精品导航| 亚洲视频一区| 欧美一区中文字幕| 一本一道久久综合狠狠老精东影业| 久久裸体艺术| 性伦欧美刺激片在线观看| 99综合在线| 亚洲国产精品激情在线观看| 国产九九精品视频| 欧美日韩一级黄| 欧美成人精品激情在线观看| 欧美资源在线观看| 亚洲永久免费精品| 日韩视频在线观看| 91久久精品国产91性色| 久久久噜噜噜久久| 一二三区精品福利视频| 欧美国产免费| 美女视频黄a大片欧美| 久久久久久久97| 欧美在线观看你懂的| 亚洲男人的天堂在线aⅴ视频| 亚洲美女av网站| 亚洲精品欧美专区| 亚洲国产精品久久久久秋霞不卡| 国产乱码精品一区二区三区五月婷| 欧美色图首页| 欧美视频在线一区二区三区| 欧美日韩另类在线| 欧美日韩一视频区二区| 欧美日韩国产成人在线观看| 欧美激情a∨在线视频播放| 欧美不卡视频一区| 欧美精品成人91久久久久久久| 欧美成年视频| 欧美日韩成人综合| 欧美午夜久久| 国产欧美日韩在线视频| 国产综合av| 尤物九九久久国产精品的特点 | 国产精品综合av一区二区国产馆| 国内精品免费在线观看| 亚洲最黄网站| 日韩视频中文字幕| 一本色道久久综合亚洲精品小说| 日韩视频一区二区在线观看| 一本色道88久久加勒比精品| 日韩亚洲一区在线播放| 99视频精品全国免费| 中文在线不卡视频| 欧美一区二区视频在线观看2020| 久久久久国产一区二区| 免费视频一区| 欧美性jizz18性欧美| 国产午夜精品久久久久久免费视| 黄色成人在线网站| 亚洲剧情一区二区| 亚洲欧美在线一区| 久久在线视频| 亚洲毛片在线观看| 欧美一区二区精品| 欧美mv日韩mv国产网站app| 欧美三区视频| 国产有码一区二区| 亚洲图片在线| 欧美视频一区二区三区| 国产精品久久久久久久久 | 亚洲一区国产精品| 久久久精品动漫| 欧美人与禽性xxxxx杂性| 国产一区二三区| 欧美伊人久久久久久午夜久久久久 | 欧美一区二区福利在线| 欧美激情精品| 国产亚洲精品一区二区| 亚洲神马久久| 欧美成人自拍视频| 午夜国产精品视频免费体验区| 免费看亚洲片| 国模私拍一区二区三区| 亚洲在线观看免费视频| 欧美黄色影院| 欧美在线观看视频在线| 亚洲国产中文字幕在线观看| 久久嫩草精品久久久精品一| 亚洲美洲欧洲综合国产一区| 欧美一区二区免费| 国产精品国产三级国产aⅴ浪潮 | 午夜欧美大尺度福利影院在线看|