您的位置:首页 > 编程语言 > Lua

C++ 调用Lua简单例子

2012-08-19 00:11 441 查看
首先配置环境,百度文库里这个讲的很详细

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

--简单的例子,只做整数加法
function add(x, y)
return x + y
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文件相同的目录下不行,之后放到里面的工程目录即可。

author:good90
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: