1

Тема: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке:

Lua_code:

function my_func_Lua()

message("my_func_Lua")

end



function main()

Quik_Lua_connector = require("Quik_Lua_connector_TEST")  

Quik_Lua_connector_TEST() 



-------------------------
while not stopped do 
sleep(1)
end 
-------------------------

end


C++ код:

static int Quik_Lua_connector_TEST(lua_State* L)
{

    std::cout << "Start" << std::endl;

    lua_getglobal(L, "my_func_Lua");  // получаю функцию


    //Проверяю, что на вершине стека находится теперь именно функция:    int status_lua_is_function = lua_isfunction(L, -1); 
    std::cout << "status_lua_is_function:" << status_lua_is_function << std::endl;        //return 1  - значит Lua функция.




     int status = lua_pcall(L, 0, 0, 0);    //Вызываю функцию без аргументов и бещ возвратного значения.

    if (status != 0)
    {
        std::cout << "error:" << lua_tostring(L, -1) << std::endl; //ОШИБКА: error in error handling
    }

}

lua_pcall ВСЕГДА завершается ошибкой "error in error handling"

2 (2022-10-04 21:00:19 отредактировано swerg)

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

А что у вас дальше написано?
Здесь вроде все выглядит пристойно.

3

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

swerg пишет:

А что у вас дальше написано?
Здесь вроде все выглядит пристойно.

Ничего - это весь код. Даже, если дальше был код, он не исполнится, так как lua_pcall возвращает ошибку и на верху стека сообщение об ошибке.

4

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

Я взял с GitHub [url=https://quik2dde.ru/viewtopic.php?id=18]библиотеку из этой темы[/url], там всё было готово, в том числе lib-файлы для сборки
В неё добавил свою функцию - работает отлично.

5

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

swerg пишет:

Я взял с GitHub [url=https://quik2dde.ru/viewtopic.php?id=18]библиотеку из этой темы[/url], там всё было готово, в том числе lib-файлы для сборки
В неё добавил свою функцию - работает отлично.


Я использую Lua 5.4 - quik 9.7.1.10

6

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

Пересобрал под Lua5.4
Обновил терминал до 9.7.1

Работает отлично тот же самый приведенный мною код.
(картинки выкладывать лень)

PS
Если запускать не с той версией Lua, с какой собрана библиотека, то терминал явно пишет ошибку:

multiple Lua VMs detected. Expected 5.4 instead of 5.3

Это хорошо.

7 (2022-10-04 21:27:00 отредактировано Serg_)

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

swerg пишет:

Пересобрал под Lua5.4
Обновил терминал до 9.7.1

Работает отлично тот же самый приведенный мною код.
(картинки выкладывать лень)

PS
Если запускать не с той версией Lua, с какой собрана библиотека, то терминал явно пишет ошибку:

multiple Lua VMs detected. Expected 5.4 instead of 5.3

Это хорошо.

Если бы dll - была собрана некорректно, то dll - даже бы не вызвалось.
Но dll вызывается, но lua_pcall - ВСЕГДА завершается ошибкой.
Терминал естественно - не выдает никаких ошибок.

Я схожу с ума ?

8 (2022-10-04 21:29:07 отредактировано swerg)

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

Serg_ пишет:

Я схожу с ума ?

Про это не знаю.
Но зачем вы упорно используете какие-то непонятные lib-файлы - про это мне очень хотелось бы чтобы вы рассказали.

Повторюсь: проверяйте параметры сборки.

9

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

swerg пишет:
Serg_ пишет:

Я схожу с ума ?

Про это не знаю.
Но зачем вы упорно используете какие-то непонятные lib-файлы - про это мне очень хотелось бы чтобы вы рассказали.

Повторюсь: проверяйте параметры сборки.

Я использовал ОФФИЦИАЛЬНО рекомендованные сборки: [url]https://luabinaries.sourceforge.net/[/url]

Если бы что то было некорректно - ничего бы не запустилось в принципе.

10

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

Я понял.
Не вижу дальнейшего смысла.

11

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

Собрал из исходников. Заработало. sad  !@#$%^&*(

12

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

Разработчики квика таки оказались ни при чем?

13

Re: Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке

Да! Криворуий оказался в этом случае - только я.