LuaとC++の簡単なインタラクション

1412 ワード

// test.cpp :              。
//

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

static int print(lua_State* L)
{
    /*    lua         */
    int sum = lua_tointeger(L, 1); // Lua  C     ,              index=1   。
    
    /*      lua*/
    lua_pushnumber(L, sum);
    return 1;
}

lua_State* L; 

int luaadd(int x,int y)
{
    int sum;
    /* lua    */ 
    lua_getglobal(L, "add"); 

    /*           */ 
    lua_pushnumber(L, x); 

    /*     */ 
    lua_pushnumber(L, y);

    /*         ,       */ 
    lua_call(L, 2, 1);  //               。               

    /*    ,                  */ 
    sum = (int)lua_tointeger(L, -1);  
    lua_pop(L, 1);

    return sum;

}
int _tmain(int argc, _TCHAR* argv[])
{
    int sum;
    /* Lua   */ 
    L = lua_open();	//   .0     Lua,    luaL_newstate  

    
    /*     */
    //lua_pushcfunction(L, print);
    /*          */
    //lua_setglobal(L, "myPrint");
    lua_register(L, "myPrint", print); //         
   

    /*    add.lua */
    luaL_dofile(L, "lua/Init.lua");
    //  lua
    sum = luaadd( 200, 50 ); 
    printf("sum=%d
",sum); return 0; } //lua/Init.lua /* function add(x, y) -- c , c push sum = myPrint(x+y) return sum end function sub(x, y) return x - y end */