Обработка ошибок lua c++

75
09 марта 2021, 03:10

Как можно реализовать вывод ошибки lua например: "Syntax error in script.lua 4 line". Использую LuaBridge и lua5.3. Вот мой класс который запускает луа скрипт:

//.h
#pragma once
#pragma comment(lib, "lua53.lib")
extern "C" {
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
#include <iostream>
#include <LuaBridge/LuaBridge.h>
using namespace std;
using namespace luabridge;
class Lua_sup
{
private:
    string m_name;
    lua_State* L ;
    bool init_state = false;

public:
    Lua_sup(string name);
    Lua_sup() {};
    ~Lua_sup();
    void init();
    void test();
    bool get_state() { return init_state; }
};

//.cpp
 #include "Lua_sup.h"

void printMessage(const std::string& s) {
    cout << "print = " << s << endl;
}
string get_string() {
    return "Hi ";
}
Lua_sup::Lua_sup(string name)
{
    m_name = name;
    L = luaL_newstate();
    luaL_openlibs(L);
}

Lua_sup::~Lua_sup()
{

    lua_close(L);
}
void Lua_sup::init()
{
    //L = luaL_newstate();
    getGlobalNamespace(L).addFunction("printMessage", printMessage);
    int temp = luaL_loadfile(L, m_name.c_str()) || lua_pcall(L, 0, 0, 0);
    if (temp)    {
        cout << "Error";
        init_state = false;
    }
    getGlobalNamespace(L).addFunction("get_string", get_string);
    getGlobalNamespace(L).addFunction("printMessage", printMessage);
    //int temp = lua_pcall(L, 0, 0, 0);
    init_state = true;
}

void Lua_sup::test()
{
    LuaRef hello_world_sum = getGlobal(L, "hello_world_sum");
    LuaRef plot = getGlobal(L, "plot");
    for (int i = 0; i < 3; i++)
    {
        int result = hello_world_sum(1, 2);
        cout << "Result = " << result << endl;

    }

    int result = hello_world_sum(1, 2);
    cout << "Result = " << result << endl;
    getchar();
}

//main
#include "Lua_sup.h"
using namespace luabridge;

int main() {

    Lua_sup lua("script.lua");
    lua.init();
    lua.test();
    lua.test();
    Lua_sup lua1("123.lua");
    lua1.init();
    lua1.test();
    lua.test();


}
READ ALSO
Разбить строку на несколько переменных

Разбить строку на несколько переменных

Есть строки вида 2 -580 12 -35

80
Как разбить строку по пробелам?

Как разбить строку по пробелам?

Как разбить строку на символ - '\n' вместо пробелов?

142
Boost Asio read/read_untill некорректная работа

Boost Asio read/read_untill некорректная работа

Что то я окончательно запутался, без помощи не могу разобраться: Пытаюсь прочитать ответ от сервера на get запрос, код простой:

94
Google charts слишком широкие на экране телефона

Google charts слишком широкие на экране телефона

На своем Wordpress-сайте я показываю 2 диаграммы при помощи Google Charts и, к сожалению, на экране мобильных устройств они шире, чем ширина экрана:

107