C++ 调用Lua简单例子

来源:互联网 发布:php多久能学会 编辑:程序博客网 时间:2024/05/20 10:51
 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 + y4 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文件相同的目录下不行,之后放到里面的工程目录即可。

 

原创粉丝点击