美文网首页
c++调用lua中的函数

c++调用lua中的函数

作者: 左脚迈太快 | 来源:发表于2019-11-14 18:48 被阅读0次

为了方便介绍c++和lua的交互,先整一个基本的示例程序,确保环境可以正常运行

从lua的官网下载lua的源码,下载地址:点击下载lua源码, 用vs创建一个win32控制台项目命名为Cpp_Lua,创建好之后再创建一个空项目命名为lua用来编译刚下载好的lua源码(PS:编译成静态库方便我们使用),真个项目大概的样子

image

把下载好的lua源码src文件夹解压到上面创建好的Lua工程项下,目录结构是这个样子的

image image

修改Lua工程项的项目属性,修改输出目录和配置类型

image

修改好之后就可以直接编译lua工程项了,我用的debug模式,方便调试学习,生成好之后就会在项目文件夹下(LuaLib/Debug/)看到生成的lua静态库Lua.lib

下面开始编写代码测试生成的lua库,在Cpp_Lua项目中添加文件Cpp_Lua.cpp

#include <iostream>

using namespace std;

extern "C"
{
#include "lua.h"  
#include "lauxlib.h"  
#include "lualib.h"  
}

int main(int argc, char* argv[])
{
    lua_State *L = luaL_newstate();
    luaL_openlibs(L);
    
    auto i_ret = luaL_loadfile(L, "test.lua");
    if (i_ret)
    {
        cout << "load file error" << endl;
        return i_ret;
    }
    i_ret = lua_pcall(L, 0, 0, 0);
    if (i_ret)
    {
        cout << "pcall error" << endl;
        return i_ret;
    }
    lua_getglobal(L, "add");
    lua_pushnumber(L, 10);
    lua_pushnumber(L, 20);
    i_ret = lua_pcall(L, 2, 1, 0);
    if (i_ret)
    {
        const char *pErrorMsg = lua_tostring(L, -1);
        cout << pErrorMsg << endl;
        lua_close(L);
        return i_ret;
    }
    const int num = static_cast<int>(lua_tonumber(L, -1));
    cout << num << endl;

    return 0;
}

修改Cpp_Lua工程项目的属性,因为我们要用到lua库,这里主要就是配置lua库的头文件和相应的lib文件的位置


引用的lua头文件路径
引用的上面我们生成的lua.lib路径

修改完成之后我们就可以直接F7进行编译了,如果想要运行,我们还需要准备调用的lua文件


最终目录结构
新建test.lua,文件位置如上图
function add(a,b)
    return a + b
end

一切准备好之后就可以Ctrl+F5运行了,运行结果如下


运行结果

如果想要更好的c++和lua的交互我们选择使用开源库LuaBridge,下一篇文件举例如何使用

相关文章

  • 三、Lua调用C++函数

    上一篇文章中我们已经知道了,C++怎么调用Lua中的函数,接下来我们学习一下,Lua怎么调用C++中的函数。 这篇...

  • lua调用c++中的函数(使用LuaBridge)

    前面一节简述描写了如何在c++中调用lua函数,这节简述描写如何在lua中调用c++中的函数,还是使用前一节的工程...

  • Lua绑定流程

    绑定是为了实现将C++代码注册到lua环境,使得lua可以调用C++函数。https://blog.csdn.ne...

  • C++调用lua方式

    目标 使用C++调用lua接口 示例 lua代码(test.lua) C++调用示例(lua_test.cpp) ...

  • c++调用lua中的函数

    为了方便介绍c++和lua的交互,先整一个基本的示例程序,确保环境可以正常运行 从lua的官网下载lua的源码,下...

  • Lua中的CAPI概述

    头文件lua.h: Lua提供的基础函数,包括创建Lua环境,调用Lua函数,读写Lua环境中的全局变量,以及注册...

  • lua函数调用

    Lua 中的函数调用的语法如下: functioncall ::= prefixexp args 函数调用时,第一...

  • Cocos2dx Lua 绑定

    所谓lua绑定就是说在lua中可以调用c++的类或者函数,整个过程细分为九步 1.下载配置环境2.编写定义的c++...

  • Lua_API lua_call & lua_callk

    开篇 今天来简单了解一下 Lua 的函数调用:lua_call。 解析 函数调用协议 void lua_call ...

  • 四、C++获得Lua的变量和Table的值

    上两篇文章都已经把Lua和C++函数的调用讲完了,这篇开始讲变量和Table的调用。 这篇文章主要是讲C++怎么调...

网友评论

      本文标题:c++调用lua中的函数

      本文链接:https://www.haomeiwen.com/subject/nuqdictx.html