• C++调用Lua编程环境搭建及测试代码示例


    C++调用Lua编程环境搭建及测试代码示例
    摘要:测试环境是VS2005+LuaForWindows_v5.1.4-45.exe+WIN7 1.安装lua开发环境LuaForWindows_v5.1.4-45.exe 2.启动VS2005,选择C++下的"win32"项目类型中的"Win2控制台应用程序" 3.工具--选项--项目和解决方案--VC++目录--可执行程序(C:Program FilesLua5.1)
    测试环境是VS2005+LuaForWindows_v5.1.4-45.exe+WIN7
    1.安装lua开发环境LuaForWindows_v5.1.4-45.exe
    2.启动VS2005,选择C++下的"win32"项目类型中的"Win2控制台应用程序"
    3.工具--选项--项目和解决方案--VC++目录--可执行程序(C:Program FilesLua5.1);包含文件(C:Program FilesLua5.1include);库文件(C:Program FilesLua5.1lib);项目--'项目名'属性 子菜单--配置属性--链接器--输入--附加依赖项(lua51.lib lua5.1.lib)
    第3部的详细配置可参照百度文库中的这篇文档:
    
    4.之后在 “项目名.cpp”文件中如下:
    // CYLua.cpp : 定义控制台应用程序的入口点。
    //
    #include "stdafx.h"
    // 这是个C++程序, 所以要extern "C",
    // 因为lua的头文件都是C格式的
    extern "C" {
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
    }
    /* the Lua interpreter */
    lua_State* L;
    int luaadd ( int x, int y )
    {
    int sum;
    /* the function name */
    lua_getglobal(L, "add");
    /* the first argument */
    lua_pushnumber(L, x);
    /* the second argument */
    lua_pushnumber(L, y);
    /* call the function with 2
    arguments, return 1 result */
    //说明调用的函数是带有2个参数和1个返回值
    lua_call(L, 2, 1);
    /* get the result */
    sum = (int)lua_tonumber(L, -1);
    lua_pop(L, 1);
    return sum;
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    int sum;
    /* initialize Lua */
    L = lua_open();
    luaopen_base(L);
    /* load Lua base libraries */
    luaL_openlibs(L);
    /* load the script */
    /*Lua01.lua是这个C++程序调用的Lua文件,注意luaL_dofile()函数的第二个参数要写绝对路径,否则执行后会提示“unprotected error in call to lua api(attampt to call a nil value)”错误 */
    luaL_dofile(L, "D:\LuaTestDoc\Lua01.lua");
    /* call the add function */
    sum = luaadd( 10, 15 );
    /* print the result */
    printf( "The sum is %d", sum );
    /* cleanup Lua */
    lua_close(L);
    return 0;
    }
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    打开SciTE的Lua集成开发环境,编辑Lua01.lua文件如下(本程序是把此文件放在了D:LuaTestDoc路径下,故当加载并编译此Lua文件时这样写:luaL_dofile(L, "D:\LuaTestDoc\Lua01.lua");):
    function add(x,y)
    return x+y
    end
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    最后:ctrl+F5编译运行代码:运行结果会是:The sum is 25.
  • 相关阅读:
    福大软工 · 第十次作业
    Summary #ToBeContinue......
    福大软工 · 第十二次作业
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
    Beta 冲刺(5/7)
    Beta 冲刺(4/7)
    Beta 冲刺(3/7)
    Beta 冲刺(2/7)
    福大软工 · 第十次作业
  • 原文地址:https://www.cnblogs.com/timssd/p/4753612.html
Copyright © 2020-2023  润新知