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 Files\Lua\5.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 Files\Lua\5.1);包含文件(C:\Program Files\Lua\5.1\include);库文件(C:\Program Files\Lua\5.1\lib);项目--'项目名'属性 子菜单--配置属性--链接器--输入--附加依赖项(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.