Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 04.08.2021
Сообщений: 193

Компилируется, но не запускается

15.02.2023, 09:51. Показов 1851. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

Получилось наконец-то скомпилировать код, все на 100% выполняется, создается аналог exe файла (не знаю еще как в линуксе это расширение исполняемого файла называется), но при нажатии на него ничего не происходит (приложение с формами QT). Пока не понимаю в какую сторону копать, может не так CMake файл для компиляции написан или чего то не хватает ? Приложить текст CmakeList?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2023, 09:51
Ответы с готовыми решениями:

Проект компилируется, но не запускается
компиляция проходит без ошибок, но дальше - ничего. ничего не происходит, файл проекта не запускается.

Программа компилируется, но не запускается
любая абсолютно программа на C++ если нет ошибок компилируется, но если запустить, треугольник типа нажат но ничего не происходит(не...

Программа компилируется, но не запускается
#include <iostream> using namespace std; int main() { int x = 0, y = 0; cout<<"Set interval:"<<endl; ...

15
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 869
15.02.2023, 13:14
Запустите приложение из консоли (или из mc) и покажите что выводится на экран.
0
1 / 1 / 0
Регистрация: 04.08.2021
Сообщений: 193
15.02.2023, 13:21  [ТС]
sudo и название программы или только название? Не получается запустить
Операционка AstraLinux
0
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 869
15.02.2023, 13:27
sudo не нужно.
просто из консоли попытайтесь запустить что скомпилировали и покажите что вам напишет
0
1 / 1 / 0
Регистрация: 04.08.2021
Сообщений: 193
15.02.2023, 13:28  [ТС]
Просто ввожу название исполняемого файла, ответ - команда не найдена

Через win+r попробовал запустить, пишет следующее:

Code
1
2
3
4
QLayout: Attempting to add QLayout "" to GUI "MainWindow", which already has a layout
QLayout: Attempting to add QLayout "" to GUI "MainWindow", which already has a layout
QLayout: Attempting to add QLayout "" to GUI "MainWindow", which already has a layout
QLayout: Attempting to add QLayout "" to GUI "MainWindow", which already has a layout
0
фрилансер
 Аватар для Алексей1153
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,141
15.02.2023, 13:37
Horwood, программа выполняется, но где-то что-то происходит не так (в частности, попытка добавить компоновщик в виджет, который уже содержит компоновщик). Попробуй в конструкторе MainWindow оставить только вызов ui->setupUi(this); - отобразится ли окно?
0
Модератор
Эксперт Java
 Аватар для alecss131
2881 / 1386 / 411
Регистрация: 11.08.2017
Сообщений: 4,426
Записей в блоге: 2
15.02.2023, 13:53
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Попробуй в конструкторе MainWindow оставить только вызов
Проблема как раз таки в том что у MainWindow уже есть Layout, а ему пытаются запихнуть ui с Layout-ом. У меня такое было когда в дизайнере в качестве окна был выбран просто Widget, а не MainWindow. Это решается исправлением главного элемента в дизайнере на MainWindow, либо в коде заменой MainWindow на Widget, либо совсем костыльный способ использовать промежуточный виджет.

Добавлено через 1 минуту
То есть дизайн для простого Widget присвоить MainWindow не выйдет и будет писать подобную ошибку
0
1 / 1 / 0
Регистрация: 04.08.2021
Сообщений: 193
15.02.2023, 14:09  [ТС]
Сейчас пишу вот так :

Code
1
2
3
4
5
6
7
8
GUI::GUI(QWidget* parent) : QMainWindow(parent)//, ui(new Ui::MainWindow)
{   
    ui->setupUi(this);
        QVBoxLayout *generalLayout = new QVBoxLayout(this);
 
// далее создаются разные блоки интерфейса и устанавливаются на слой generalLayout 
 
         ui->centralwidget->setLayout(generalLayout);
Ошибок в терминале больше не выводит, но и ничего не запускается
0
фрилансер
 Аватар для Алексей1153
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,141
15.02.2023, 14:12
Лучший ответ Сообщение было отмечено Horwood как решение

Решение

Цитата Сообщение от Horwood Посмотреть сообщение
QVBoxLayout *generalLayout = new QVBoxLayout(this);
красное - надо centralWidget()

и вообще, всё это лучше делать в редакторе форм

Добавлено через 42 секунды
Цитата Сообщение от Horwood Посмотреть сообщение
ui->centralwidget->setLayout(generalLayout);
а это не нужно
0
1 / 1 / 0
Регистрация: 04.08.2021
Сообщений: 193
15.02.2023, 14:17  [ТС]
Приложение было написано для Windows,а тут внезапно потребовался порт на linux, вот и проблемы лезут

Написал:

Code
1
2
3
4
GUI::GUI(QWidget* parent) : QMainWindow(parent)//, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QVBoxLayout *generalLayout = new QVBoxLayout(centralWidget());
Результат тот же, в терминале ошибок нет, но и не запускается


Прошу прощения, забыл - в GUI.h еще была вот такая строка - Ui::MainWindow *ui;

Если ее убрать, то компилиться не будет с ошибкой - error: ‘ui’ was not declared in this scope
ui->setupUi(this);
0
фрилансер
 Аватар для Алексей1153
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,141
15.02.2023, 14:20
Цитата Сообщение от Horwood Посмотреть сообщение
//, ui(new Ui::MainWindow)
кстати, а почему создание ui прикрыто?
0
1 / 1 / 0
Регистрация: 04.08.2021
Сообщений: 193
15.02.2023, 14:51  [ТС]
Если ее оставить, то появляются ошибки с которых и начинали, поэтому пробовал компилировать и с ней и без нее

Добавлено через 16 минут
Оставив только

Code
1
2
3
4
GUI::GUI(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{   
    ui->setupUi(this);
}
Открылось пустое окно

Добавлено через 10 минут
Путем исключения кусков кода нашел, что запуску мешает что то этой функции, пытаюсь искать дальше:

Code
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
void GUI::changeAccess(bool isVisible)
{
    // блокировка кнопки Stop
    stopBtn->setEnabled(!isVisible);
    pauseBtn->setEnabled(!isVisible);
 
    // разблокировка кнопок Start и Connect
    startBtn->setEnabled(isVisible);
    defaultBtn->setEnabled(isVisible);
 
    // включение возможности ввода ip и port
    leIp->setReadOnly(!isVisible);
    lePort->setReadOnly(!isVisible);
 
    // разблокировка всех полей ввода параметров
    lePacketMaxBytes->setEnabled(isVisible);
    lePeakBytes->setEnabled(isVisible);
    lePeakTime->setEnabled(isVisible);
    leIp->setEnabled(isVisible);
    lePort->setEnabled(isVisible);
    leCutEdit->setEnabled(isVisible);
    pathFileEdit->setEnabled(isVisible);
    leSendFrom->setEnabled(isVisible);
    leSendTo->setEnabled(isVisible);
    leIpLoc->setEnabled(isVisible);
 
    // разблокировка QCheckBox 
    checkRepeat->setEnabled(isVisible);
 
    // разблокировка RadioButton
    pszBuf->setEnabled(isVisible);
    localBuf->setEnabled(isVisible);
}
0
фрилансер
 Аватар для Алексей1153
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,141
15.02.2023, 14:56
Цитата Сообщение от Horwood Посмотреть сообщение
Если ее оставить
ну, так это же необходимо, иначе указатель будет просто висячий. Точнее, даже не инициализированный (то есть, с таким указателем даже смотреть нет смысла дальше было бы)

Цитата Сообщение от Horwood Посмотреть сообщение
пытаюсь искать дальше
а тут что ? Где останавливается отладчик? Может, опять какой-то указатель без инициализации или нулевой ?

Добавлено через 1 минуту
я бы в редакторе форм разместил рядом два виджета, на одном положил бы те, которые нужно setEnabled(true), на другом - которые нужно setEnabled(false). Тогда столько кода не требуется - просто отключаем один из виджетов, включаем второй
0
1 / 1 / 0
Регистрация: 04.08.2021
Сообщений: 193
15.02.2023, 15:09  [ТС]
Да, вы правы - нашлась переменная, инициализацию которой сам и закомментировал. Закомментировав строку с этой переменной - программа заработала

Только вместо русского языка абракадабра. В Виндовс использовал для русского языка следующую функцию

Code
1
2
3
4
5
QString GUI::c2s(const char* c)
{
    static QTextCodec* cod = QTextCodec::codecForName("Windows-1251");
    return cod->toUnicode(c);
}
Вместо Windows-1251 нужно подставить тоже самое для Linux? Не подскажете как называется кодировка?
0
фрилансер
 Аватар для Алексей1153
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,141
15.02.2023, 15:12
Horwood, думаю, там utf8

Horwood, а вообще, все исходные файлы *.h и *.cpp нужно сделать в кодировке utf8, по идее.
0
1 / 1 / 0
Регистрация: 04.08.2021
Сообщений: 193
15.02.2023, 15:21  [ТС]
Огромное спасибо за помощь, все заработало и да - UTF-8 помогло, все на русском.
Сам бы год разбирался)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2023, 15:21
Помогаю со студенческими работами здесь

Программа компилируется, но не запускается
создал проект Win32. когда нажал так (рисунок) он мне предложил сделать построение моего проекта. я нажал "ДА", далее...

Программа компилируется, но не запускается
Есть матрица 10 на 10, из нее извлекается часть 3 на 3. Первый элемент - 6 строка, 5 столбец. Компилируется без ошибок, но после...

Проект по F9 компилируется, но не запускается
После нажатия на F9 проект компилируется но не запускается...что в такой ситуации делать? Form->Visible в true стоит. Я уже потерял...

GCC 4.7 компилируется, но не запускается бинарник
Где облажался? int main() { int a = {5,}; int b = {7,}; int sum=0; for(int i = 1; i < 200; i++)

GCC 4.7 компилируется, но не запускается бинарник
где я накосячил? Компилил и под Linux, и под Win, под вин выдает ошибку совместимости, или что-то вроде того int main() { int a =...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru