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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM