C++调用lua简单的例子

首先配置环境,百度文库里这个讲的很详细

  http://wenku.baidu.com/view/7912da3667ec102de2bd8957.html

环境配置好之后,我也写了个简单的调用

main.cpp

#include <stdio.h>

 

extern "C"{

#include "lua.h"

#include "lualib.h"

#include "lauxlib.h"

};

 

 

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 = 0;

  L = lua_open();

  luaopen_base(L);

  luaL_openlibs(L);

  luaL_loadfile(L, "add.lua");

  lua_pcall(L, 0, LUA_MULTRET, 0);

  sum = luaAdd(10, 15);

  printf("The sum is %d\n", sum);

  lua_close(L);

 

  return 0;

}

 

Add.lua

1 --简单的例子,只做整数加法

2 function add(x, y)

3     return x + y

4 end

 

当编译之后没有问题,执行时出了点问题,如下:

PANIC: unprotected error in call to Lua API (attempt to call a nil value)

结果google了一下,说是luaL_loadfile换成luaL_dofile,当时我用的就是luaL_dofile,这是可能的一个原因,但不是我的。

最终找到原因,add.lua放的位置不对,我将它放在vs的和.cpp文件相同的目录下不行,之后放到里面的工程目录即可。

提供luaIDE下载: http://www.blueantstudio.net/content/index_static.php

注:内容转载自: http://www.cnblogs.com/good90/archive/2012/08/19/2645997.html

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值