分享

c++调用lua脚本1(平台windows)

 MikeDoc 2011-11-24
通过c++调用lua 脚本,
环境VC++6.0
lua sdk 5.1


在调用前 先认识几个函数。
1. 调用lua_open()将创建一个指向Lua解释器的指针。
2. luaL_openlibs()函数加载Lua库。
3. 使用luaL_dofile()加载脚本并运行脚本。
4. lua_close()来关闭Lua指向解释器的指针。

5. 调用lua_getglobal()将add()函数压入栈顶,add()为lua函数。
6. 第一个参数x,通过调用lua_pushnumber()入栈。
7. 再次调用lua_pushnumber()将第二个参数入栈。
8. 使用lua_call()调用Lua函数。
9. 调用lua_tonumber()从栈顶取得函数的返回值。
10. lua_pop()移除栈顶的值。


代码
add.lua
1function add ( x, y )
2 return x + y
3end
4

main.cpp
#include <stdio.h>

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;

//函数名
lua_getglobal(L, "add");

//第一个参数压栈
lua_pushnumber(L, x);

//第二个参数压栈
lua_pushnumber(L, y);

//调用函数
lua_call(L, 2, 1);

//得到返回值
sum = (int)lua_tonumber(L, -1);
lua_pop(L, 1);

return sum;
}

int main ( int argc, char *argv[] )
{
int sum;

//创建一个指向Lua解释器的指针。
L = lua_open();

//函数加载Lua库
luaL_openlibs(L);

//加载脚本
luaL_dofile(L,"add.lua");

//调用函数
sum = luaadd( 10, 11);

// print the result
printf( "The sum is %d\n", sum );

//关闭 释放资源
lua_close(L);

return 0;
}



注意问题:
1.工程头文件lua.h等,编译器能找到,可以通过工具来设置头文件路径。
2. 添加lua5.1.lib到Object/library modules列表中。

测试结果
The sum is 21

关于lua的认识

http://www./expter/archive/2008/12/24/70224.html


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多