zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    npx
    EOS踩坑记 2
    Communication Model
    EOS踩坑记
    Windows导入EOS工程
    搭建EOS环境
    加入EOS主网
    Add Inline Actions
    Secondary Indices
    Data Persistence
  • 原文地址:https://www.cnblogs.com/good90/p/2645997.html
Copyright © 2011-2022 走看看