C++ 调用Lua简单例子
首先配置环境,百度文库里这个讲的很详细
http://wenku.baidu.com/view/7912da3667ec102de2bd8957.html
环境配置好之后,我也写了个简单的调用
main.cpp
1 #include <stdio.h> 2 3 extern "C"{ 4 #include "lua.h" 5 #include "lualib.h" 6 #include "lauxlib.h" 7 }; 8 9 10 lua_State *L; 11 int luaAdd(int x, int y) 12 { 13 int sum; 14 lua_getglobal(L, "add"); 15 lua_pushnumber(L, x); 16 lua_pushnumber(L, y); 17 lua_call(L, 2, 1); 18 sum = (int)lua_tonumber(L, -1); 19 lua_pop(L, 1); 20 return sum; 21 } 22 23 int main(int argc, char *argv[]) 24 { 25 int sum = 0; 26 L = lua_open(); 27 luaopen_base(L); 28 luaL_openlibs(L); 29 luaL_loadfile(L, "add.lua"); 30 lua_pcall(L, 0, LUA_MULTRET, 0); 31 sum = luaAdd(10, 15); 32 printf("The sum is %d\n", sum); 33 lua_close(L); 34 35 return 0; 36 }
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文件相同的目录下不行,之后放到里面的工程目录即可。
author:good90