Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22

В IDE работает, а готовый exe нет

15.04.2015, 10:42. Показов 5346. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть маленькая программа, на выключение компьютера по таймеру. Использовались библиотеки iostream, cstdlib, clocale, cctype. Проблема в том, что в среде разработки все отлично отрабатывает, а готовый файл *.exe запускается, но не выполняет команд. Что может быть, куда копать, где настройки менять, возможно в них дело? Заранее спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2015, 10:42
Ответы с готовыми решениями:

Как получить готовый .exe файл, чтобы запускать его без IDE
Всем привет Никогд по этому поводу не заморачивался, а тут понадобилось и я сел в лужу. Вобщем, есть программа, которая прекрасно...

Программа работает только в ide, после компиляции нет!
Здравствуйте, уважаемые!! Столкнулась с такой проблемой. Написанное мною приложение, работает только в ide, а если его скомпилировать...

Почему в одних IDE код работает, а в других нет? (Visual Studio vs DevC++)
Есть простой код, который находит максимальное значение в массиве. Но есть странность одна: 1)На Visual Studio программа работает...

30
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
15.04.2015, 10:49
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Есть маленькая программа, на выключение компьютера по таймеру. Использовались библиотеки iostream, cstdlib, clocale, cctype.
В этих библиотеках есть что-то для выключения компьютера?

Добавлено через 39 секунд
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
в среде разработки все отлично отрабатывает
Среда какая?
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
15.04.2015, 14:41  [ТС]
Добавлено через 19 минут
с помощью system("shutdown -s -t значение"). Я бы скинул код, но работаю с помощью ramdisk, а он завис вчера и все пропало. Остался только ехе файл, который на рабочий стол кинул. Среда разработки - VS 2013.

Добавлено через 3 часа 22 минуты
Неужели такой сложный вопрос задал или не правильно задал? Но что-то, никто не имеет желания помочь.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
15.04.2015, 15:15
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
а готовый файл *.exe запускается, но не выполняет команд.
Какие команды не выполняет? Только эту?
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
system("shutdown -s -t значение")
Или ещё что? ОС какая?
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
15.04.2015, 19:42  [ТС]
Суть в том, что программа из-под VS запускалась и срабатывали команды. Компьютер действительно выключался. А когда скопировал exe файл, решил попробовать на своем же железе. Программа запустилась, обработка на введение числа работает и текст что "введен неправильный символ" указывается. А вот как ввожу число, то она снова делает запрос на ввод числа. Странно, что текст программы не менялся, а не работает. Так вот и думаю, может какие dll надо, чтобы находились рядом с exe файлом. Я в этом полный профан. Сегодня, если найдется время, то напишу занового программу и посмотрю, что выйдет на этот раз. Писалась программа в Windows 7 64bit. Visual Studio 2013
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
15.04.2015, 20:15
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Программа запустилась, обработка на введение числа работает и текст что "введен неправильный символ" указывается. А вот как ввожу число, то она снова делает запрос на ввод числа.
Без кода беспредметный разговор получается. По твоему описанию, получается, что до выполнения команды (на выключение компьютера по таймеру) и не доходит дело. Код нужен, тогда можно о чём-то говорить.

Добавлено через 1 минуту
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Так вот и думаю, может какие dll надо, чтобы находились рядом с exe файлом.
В таких случаях, обычно (за все не ручаюсь) сообщение появляется, где пишется чего не хватает.

Добавлено через 1 минуту
Я проверил, на 8-ке, такое выключение. Что из среды работает (студия 13-я), что с рабочего стола.
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 01:40  [ТС]
Все верно понял. До выключения дело не доходит, а снова просит ввести число. Сегодня постараюсь максимально приближенно повторить код, так как ситуация непонятная и нигде не нашел информацию о таком случае. Хорошо бы разобраться для опыта. Спасибо. Код выложу.

Добавлено через 4 часа 56 минут
Вот код, но писал на Ubuntu, прогнал кроссплатформенным компилятором. В Windows так себя и ведет, а в Ubuntu подставил вывод строк проверки. Все отлично отработало. Жаль, что itoa нет в linux. Компилировал в geany строкой i586-mingw32msvc-g++ -o "%e".exe "%f". Русский текст не распознался в Windows, вывелся мусором.
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
#include <iostream>
#include <clocale>
#include <cstdio>
#include <cstdlib>
#include <cstring>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    
    bool flag = true;
    char str[10];
    
    do{
        system("cls");
        cout << "Введите через сколько минут выключить: ";
        cin >> str;
        if(isdigit(str[0]))
        {
            flag = false;
        }
    }while(flag);
    
    int timer = atoi(str);
    sprintf(str, "%d", timer*60);
    char *result = new char[15 + strlen(str)+1];
    strcpy(result, "shutdown -s -t ");
    strcat(result, str);
    system(result);
    
    delete[] result;
    return 0;
}
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 10:42
Лучший ответ Сообщение было отмечено Калмыков Артем как решение

Решение

Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Русский текст не распознался в Windows, вывелся мусором.
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Жаль, что itoa нет в linux.
Всё это, в С++, проще делается (на скрине - работа в Win 7):
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
#include <iostream>
#include <cstdlib>
#include <sstream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main()
{
    // для русского ввода-вывода в Windows (в свойствах консоли выбрать шрифт: Lucida Console)
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    int timer;
    cout << "Введите через сколько минут выключить: ";
    while (!(cin >> timer) || (timer <= 0) || (cin.peek() != '\n')) 
    {
        cin.clear();
        while (cin.get() != '\n');
        cout << "Ошибка ввода! Повторите ввод: ";
    }
    string result = "shutdown -s -t ";
    stringstream s;
    s << timer * 60;
    result += s.str();
    
    system(result.c_str());
    
    return 0;
}
Миниатюры
В IDE работает, а готовый exe нет  
1
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 11:29
Запуск с рабочего стола.
Миниатюры
В IDE работает, а готовый exe нет   В IDE работает, а готовый exe нет  
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 11:46  [ТС]
Спасибо, изучу. А все же, где в моем коде проблема. Могу комментариями заполнить строки, чтобы видно было, что хотел от этой команды. Может хотел и сделал не совпали где-то?

Добавлено через 14 минут
Какой-то загадочный ноутбук, на котором и Ваш код работает так же. Так же запускается, но при вводе количества минут, ничего не происходит, а просто повторяет запрос на ввод.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 12:00
Уточни, насчёт выложенного тобой, кода. Работает при запуске из среды, в windows, не работает при запуске с рабочего стола? Или что?

Добавлено через 1 минуту
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Так же запускается, но при вводе количества минут, ничего не происходит, а просто повторяет запрос на ввод.
Скрин покажи. А при запуске из среды работает?

Добавлено через 2 минуты
В своём коде вот это сделай:
C++
1
if(isdigit((unsigned char)str[0]))
Чтобы с русскими буквами ошибки не было.

Добавлено через 2 минуты
Я посмотрел твой код: должен правильно работать. Скорее всего, тут дело не в коде. Сейчас на 7-ке попробую работу.

Добавлено через 5 минут
У меня, на 7-ке, твой код работает с рабочего стола.
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 12:04  [ТС]
В VS запускается и отрабатывает программа хорошо, а когда беру .exe файл и пытаюсь им выключить, то он запускается, но не выключает компьютер, а в цикле повторяет запрос ввести число. Скрин скину, но чуть позже. Сейчас поставил Ubuntu, а проверяю ехе файлы на буке жены.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 12:22
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
а в цикле повторяет запрос ввести число.
Вот это самое загадочное. Если бы просто не выключал комп, то тут есть объяснения, а то, что не может из цикла выйти, при вводе числа, тут объяснений у меня нет.

Добавлено через 9 минут
Если будешь выкладывать скрин работы своего кода, то убери там очистку экрана, чтобы было видно, что вводится (неправильно и правильно).
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 12:33  [ТС]
ОК, только прийдется писать тексты на английском. Из-под Убунты ни одним методом не получилось русский текст отобразить в консоле Windows. Кроме Вашего, он не скомпилировался, так как не знает библиотеки windows.h и соответственно первых двух функций. Хотя в интернете встречались коды компилированные в этой же IDE geany с этой библиотекой. В общем мне ещё во многом предстоит разобраться. Сейчас ноут заберу пойду и сделаю скрины.
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 12:51  [ТС]
Один и тот же .exe запущен в этой 7-ке загадочной, а второй в Wine из под Ubuntu. В Wine отрабатывает код но естественно не выполняет команду. А в Windows, если заместо функций system(result) подставить cout<<result, все отлично выводится и программа работает.
Миниатюры
В IDE работает, а готовый exe нет   В IDE работает, а готовый exe нет  
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 13:01  [ТС]
Вот так здорово отрабатывает, если убрать system(result) и оставить cout<<result. Может result привести к const или ещё что?
Миниатюры
В IDE работает, а готовый exe нет  
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 13:09
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Из-под Убунты ни одним методом не получилось русский текст отобразить в консоле Windows. Кроме Вашего, он не скомпилировался, так как не знает библиотеки windows.h и соответственно первых двух функций.
Не прыгай с одной ОС на другую. С windows сначала разберись.

Добавлено через 3 минуты
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Вот так здорово отрабатывает, если убрать system(result) и оставить cout<<result.
system(result) заменяешь на cout << result, и код начинает выходить из цикла ввода (при вводе числа)?

Добавлено через 2 минуты
Вот такой код?
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
#include <iostream>
#include <clocale>
#include <cstdio>
#include <cstdlib>
#include <cstring>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    
    bool flag = true;
    char str[10];
    
    do{
        system("cls");
        cout << "Введите через сколько минут выключить: ";
        cin >> str;
        if(isdigit((unsigned char)str[0]))
        {
            flag = false;
        }
    }while(flag);
    
    int timer = atoi(str);
    sprintf(str, "%d", timer*60);
    char *result = new char[15 + strlen(str)+1];
    strcpy(result, "shutdown -s -t ");
    strcat(result, str);
    //system(result);
    cout << result;
    
    delete[] result;
    return 0;
}
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 13:10  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
system(result) заменяешь на cout << result, и код начинает выходить из цикла ввода (при вводе числа)?
да, не пойму как такое может быть вообще. А решил полностью работать на ubuntu и прыгать больше не думаю. Просто писать все-равно придется и под винду.

Добавлено через 1 минуту
Да, такой код, но и system(cls) закоментировал, чтобы выводы были видны.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 13:15
Возьми мой код, добавь в main, выше всего:
C++
1
setlocale(0, "");
И сделай скрин работы в windows (сначала неправильный ввод, потом правильный).
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 13:17  [ТС]
system надо вернуть или пусть закоментирован будет?
затупил , сейчас сделаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2015, 13:17
Помогаю со студенческими работами здесь

В VB работает, а в exe нет?
Делаю Adodc2.Recordset.Close работает, компилирую екзэшник - пишет run-time error 3219 операция не допускается в данном контексте. Я...

Вырубить другой EXE, на семерке работает на XP нет!
Этот код вырубает на семерке вспомогательное приложение а на XP нет:HANDLE hProc; HANDLE HS1 =...

Программа из памяти работает, а из exe-шника нет
Здравствуйте. Написал небольшую, но полезную в хозяйстве программу program del; uses dos; var f: file; begin

Один и тот же код в exe работает а в dll нет
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;iostream&gt; #include &lt;gdiplus.h&gt; #pragma comment(lib, &quot;gdiplus.lib&quot;) using...

Ниче не понимаю - написал, работает, создал exe, нет..
Доброго времени суток!! Вот такой код: #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;windows.h&gt; using namespace std; void...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru