Home  >  Article  >  Backend Development  >  How to use C++ to call Lua code configuration file function in one move (code attached)

How to use C++ to call Lua code configuration file function in one move (code attached)

php是最好的语言
php是最好的语言Original
2018-07-23 17:09:221888browse

There are two functions in the Lua file, and then the cpp file is used to call the code. Finally, there is a very critical step. When compiling, we need to add additional options: g main.cpp -o main -llua -ldl . The process seems simple, but it still requires hands-on operation.

First you need to install lua's dev. The installation is very simple:

yum install lua-devel

. Many Linux systems come with Lua but no dev, which is a bit small. pit.

The following is the Lua file, which contains two functions:

function add(a, b)
    return a + b 
end

function hello()
    print("Hello Lua!!!")
end

After that is the calling code of the cpp file:

#include<iostream>
#include<string>

using std::cout;
using std::endl;
using std::string;

//extern的意义,将下面文件当成C风格文件使用
extern "C"
{
    #include<lua.h>
    #include<lauxlib.h>
    #include<lualib.h>
}

int main()
{
    //创建环境
    lua_State *L = luaL_newstate();
    if(L == NULL)
    {   
        cout << "State error" << endl;
        return -1; 
    }   

    //加载库
    luaL_openlibs(L);
    const string file = "func.lua";
    // 加载文件
    int ret = luaL_dofile(L, file.c_str());
    if(ret)
    {   
        cout << "dofile error" << endl;
        return -1; 
    }   

    //hello函数没有参数,直接调用
    lua_getglobal(L, "hello");
    lua_pcall(L, 0, 0, 0); //三个0含义,0实参,0返回值,0自定义错误处理

    lua_getglobal(L, "add");  
    //向add函数传入两个参数,这里直接传了1和2,传变量也ok
    lua_pushnumber(L, 1);  
    lua_pushnumber(L, 2); 
    lua_pcall(L,2,1,0);        

    //返回值被放在-1的位置上
    cout << lua_tonumber(L, -1) << endl;

    lua_close(L);

    return 0;
}

Finally, there are many The key step is to add additional options when compiling:

g main.cpp -o main -llua -ldl

##See Look at the results:

How to use C++ to call Lua code configuration file function in one move (code attached)

Done

Related recommendations:

Remember the first example of Lua and C calling each other

lua and c language call each other

c How to call PHP functions

The above is the detailed content of How to use C++ to call Lua code configuration file function in one move (code attached). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn