转载:http://www.cnblogs.com/sevenyuan/p/4511808.html
1. 新建一个空的win32控制台工程,记得在vc++目录中,把lua中的头文件和lib文件的目录包含进来,然后->链接器->附加依赖项->将lua51.lib和lua5.1.lib也包含进来。
2. 在目录下新建一个avg.lua如下:
-
avg, sum = average(10, 20, 30, 40, 50)
-
print("The average is ", avg)
-
print("The sum is ", sum)
3.新建test.cpp如下:
-
#include <stdio.h>
-
extern "C" {
-
#include "lua.h"
-
#include "lualib.h"
-
#include "lauxlib.h"
-
}
-
-
/* 指向Lua解释器的指针 */
-
lua_State* L;
-
static int average(lua_State *L)
-
{
-
/* 得到参数个数 */
-
int n = lua_gettop(L);
-
double sum = 0;
-
int i;
-
-
/* 循环求参数之和 */
-
for (i = 1; i <= n; i++)
-
{
-
/* 求和 */
-
sum += lua_tonumber(L, i);
-
}
-
/* 压入平均值 */
-
lua_pushnumber(L, sum / n);
-
/* 压入和 */
-
lua_pushnumber(L, sum);
-
/* 返回返回值的个数 */
-
return 2;
-
}
-
-
int main ( int argc, char *argv[] )
-
{
-
/* 初始化Lua */
-
L = lua_open();
-
-
/* 载入Lua基本库 */
-
luaL_openlibs(L);
-
/* 注册函数 */
-
lua_register(L, "average", average);
-
/* 运行脚本 */
-
luaL_dofile(L, "avg.lua");
-
/* 清除Lua */
-
lua_close(L);
-
-
/* 暂停 */
-
printf( "Press enter to exit…" );
-
getchar();
-
return 0;
-
}
执行一下,我们可以得到结果:
大概顺序就是:我们在C++中写一个模块函数,将函数注册到Lua解释器中,然后由C++去执行我们的Lua文件,然后在Lua中调用刚刚注册的函数。
阅读(1120) | 评论(0) | 转发(0) |