C++ Lua

#include <iostream>
#include "D:/Program Files/Lua/include/lua.hpp"
#pragma comment(lib, "D:/Program Files/Lua/lib/lua51.lib") 
using namespace std;

int main(int argc, char* argv[])
{
    //创建Lua运行环境
    lua_State* L = luaL_newstate(); 
    if(L == NULL) {
        cout<<"luaL_newstate() fail!"<<endl;
        return -1;
    }

    //加载Lua基本库
    luaL_openlibs(L);

    //加载Lua脚本
    //int ret = luaL_dofile(L, "testlua.lua");
    //if(ret != 0) {
    //    cout<<"luaL_dofile() fail!"<<endl;
    //    return -1;
    //}

    //加载Lua脚本
    int ret = luaL_loadfile(L, "testlua.lua");
    if(ret != 0) {
        cout<<"luaL_loadfile() fail!"<<endl;
        return -1;
    }
    ret = lua_pcall(L, 0, 0, 0);
    if(ret != 0) {
        cout<<"lua_pcall() fail!"<<endl;
        lua_close(L);
        return -1;
    }

    //调用Lua中的函数
    lua_getglobal(L, "add");               
    lua_pushinteger(L, 11) ;  
    lua_pushinteger(L, 12) ;  
    ret = lua_pcall(L, 2, 1, 0);  
    if(ret != 0) {
        cout<<"lua_pcall() fail!"<<endl;
        lua_close(L);
        return -1;
    }

    //返回栈顶元素,然后清栈
    cout<<"result: "<<lua_tointeger(L, -1);
    lua_pop(L, 1);
 
    //释放Lua运行环境
    lua_close(L);                    
    
    return 0;
}

 

posted @ 2013-09-16 14:20  Leung文  阅读(413)  评论(0编辑  收藏  举报