Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393

Проблема с lua api c++

05.01.2019, 21:19. Показов 1736. Ответов 4
Метки lua (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Уважаемые программисты. решил изучать lua api c++ по видео https://www.youtube.com/watch?... HaXgNX0Itk
Только у меня выдает ошибку хотя на видео у парня работает хорошо.

здесь.
C++
1
2
3
4
5
    constexpr char* LUA_FILE = R"(
 function Return4()
   return 4
  end
  )";
весь код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<iostream>
#include<string>
#include <stdio.h>
#include <string>
#include"lua/lua.hpp"
using namespace std;
 
int main(int argc, char *argv[]) {
    constexpr char* LUA_FILE = R"(
 function Return4()
   return 4
  end
  )";
        lua_State *L = luaL_newstate();/*Функция создает новое Lua состояние. Она вызывает lua_newstate с функцией-*/
        luaL_dostring(L, LUA_FILE);
        lua_getglobal(L, "ru");
 
        if (lua_iscfunction(L, -1)) {
 
            lua_pcall(L, 0, 1, 0);
 
            lua_Number number = lua_tonumber(L, -1);// получить 10 из стека 1 
            cout << (int)number << endl;
        }
        lua_close(L);
    
return 0;
}
ошибки
Ошибка (активно) E0144 значение типа "const char *" нельзя использовать для инициализации сущности типа "char *const" Luaapp C:\c++\Luaapp\Source.cpp 10

Ошибка C2440 инициализация: невозможно преобразовать "const char [42]" в "char *const " Luaapp c:\c++\luaapp\source.cpp 14
Ошибка C1903 не удается восстановить после предыдущих ошибок; остановка компиляции Luaapp c:\c++\luaapp\source.cpp 14
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2019, 21:19
Ответы с готовыми решениями:

Как реализовать вызов деструктора в lua api?
Здравствуйте всем. У меня есть вопрос, получилось в lua api c++ реализовать ООП. Вызов функции возвращает указатель на объект класса. Мы...

Скажите, пожалуйста, как правильно реализовать работу методов класса в lua api c++
вот самая простая структура. как вызвать ее конструктор и метод в lua. Подскажите, пожалуйста. using namespace std; struct...

Использование Lua API
Доброго дня. Хочу извиниться, если написал не в тот форум. Получилось разобраться практически со всем, что касается интеграции Lua, кроме...

4
0 / 0 / 0
Регистрация: 21.07.2019
Сообщений: 4
31.07.2019, 08:55
Понимаю, что не совсем во время, но всё же.
C++
1
2
3
4
5
constexpr const char* LUA_FILE = R"(
            function Return4()
                retunr 4
            end
        )";
Такое решение возможно, но в моём случае Return4 не определяется как функция.
0
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393
31.07.2019, 14:24  [ТС]
VAkula1, спасибо большое за Ваш ответ, полгода узнал lua api c++. вот написал много о нем https://pastebin.com/8f9UH56W сейчас мне очень нужна многопоточность в lua, собрал библиотеку lanes для lua 5.3.5
выдает ошибку при запуске выходит ошибка /Program Files/lua/lanes.lua:535: too many C levels (limit is 200) in function at line 495 near 'next_wakeup' как ее исправить?
0
 Аватар для Toshi Namura
3 / 2 / 1
Регистрация: 27.10.2020
Сообщений: 4
04.12.2022, 02:20
Выкладываю рабочий и развернутый ответ для таких как я, случайно наткнувшихся на этот пост.
В коде lua была синтактическая ошибка в "return a + b". Из за этого код не загружался в виртуальную машину Lua.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
lua_State* const L = luaL_newstate();
 
constexpr const char* LUA_FILE = R"(
function sum(a, b)
    return a + b
end
)";
 
int main()
{
    luaL_openlibs(L);
    // Открываем файл:
    if (!luaL_dostring(L, LUA_FILE))
    {
        std::cout << lua_tostring(L, -1); // Возникла ошибка.
        return EXIT_FAILURE;
    }
    // помешяем на стэк ссылку с именем: "sum", и проверяем функция ли это:
    if (lua_getglobal(L, "sum") == LUA_TFUNCTION)
    {
        // Закидываем параметры для функции. Вызов lua_call удалит помещенные в стек параметры и саму функцию,
        // и оставит только результат.
        lua_pushnumber(L, 5);
        lua_pushnumber(L, 7);
        // Вызываем нашу функцию.
        if (lua_pcall(L, 2, 1, 0) != LUA_OK)
        {
            std::cout << lua_tostring(L, -1); // Возникла ошибка.
            return EXIT_FAILURE;
        }
 
        lua_Number number = lua_tonumber(L, -1);// получить 10 из стека 1 
        // Удаляем результат из стека.
        lua_pop(L, 1);
        // Выводим результат:
        std::cout << (int)number << std::endl;
    }
    else
        std::cout << "'sum' is not func.\n";
    lua_close(L);
 
    return EXIT_SUCCESS;
}
1
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393
05.12.2022, 05:20  [ТС]
Toshi Namura, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2022, 05:20
Помогаю со студенческими работами здесь

Класс для lua api c++
Здравствуйте уважаемые программисты. Занимаюсь lua api c++. Хочу реализовать класс, но что-то не получается, Помогите пожалуйста. ...

Lua C API название переменной по индексу
Как в C++ узнать название Lua переменной имея её (переменной) индекс? Добавлено через 19 часов 7 минут Почитав документацию я не...

Как сделать правильно замыкание функцией на api lua c++
В книге программирования на lua. Есть пример Главной функцией здесь является lua_pushcclosure, которая создает новое замыкание. ...

Lua api c++ получения указателя на число и его изменения
lua api c++ получения указателя на число и его изменения. Есть функция на lua, которая возвращает адрес памяти число по умолчанию,...

Проблема в связке Lua и C++
Всем привет. Я использую sol2 для встраивания Lua в C++. Я пишу игровой движок и мне нужно сделать систему скриптов примерно как в Unity3D....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru