Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
olesja
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 6
#1

Смена Компилятора - C++

21.02.2009, 03:10. Просмотров 2124. Ответов 9
Метки нет (Все метки)

Здравствуйте!

Начну с того, что программа работает в Visual Studio C++ 2008, но когда я пытаюсь ее переместить на другой компьютор, то у меня возникает вот это сообщение, и ничего не работает : "the application failed to start because the application configuration is incorrect. Reinstalling application may fix the problem." Хотя на моем компе все работало.

Теперь я устанавливаю новый компилятор Dev-C++ и конфигурирую SDL.
Линкеры следующие:
-lmingw32
-lSDLmain
-lSDL
-lSDL_mixer
-lSDL_image
-lSDL_ttf

Код и .exe файлы можно скачать по ссылке:
http://www.datafilehost.com/download-d3a10141.html

Проблема в том, что теперь игра начинается (на любом компе), но после нажатия центральной кнопки экран игры появляется на одну секунду, а потом тут же пропадает

Если игра шла нормально в Visual Studio C++ 2008, то почему она больше не идет в Dev-C++?
Помогите пожалуйста
Заранее благодарствую
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2009, 03:10     Смена Компилятора
Посмотрите здесь:

C++ настройка компилятора
Директивы компилятора C++
C++ Проблемы компилятора с++
C++ ошибка компилятора
C++ Ошибка компилятора
C++ Ошибки компилятора
Баг компилятора? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TurboDune
22 / 22 / 1
Регистрация: 20.02.2009
Сообщений: 59
21.02.2009, 04:25     Смена Компилятора #2
1. В большинстве случаев, если программа была скомпилирована с помощью какой-либо разновидности Visual Studio C++ в исполняемый модуль вносятся зависимости от дополнительных библиотек CRT. Поэтому чтобы такие программы работали на других компьютерах, где не установлена соответствующая версия Visual Studio необходимо и достаточно предварительно установить так называемый Redistributable Package. Его можно найти на оф. сайте Microsoft или на компьютере с установленной Visual Studio по пути:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vcredist_x86\vcredist_x86.exe

2. В программе ошибка, которая хорошо проявляется в Release версии. Видимо какое-то обращение за пределы массива. Необходимо отладить программу не только в Debug, но и в Release версиях.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//отрисовка экрана
void view ( int Steps, int CountSteps, int CanSteps, int Ident, bool flag ) const
{
  for ( int y = -starty; y <= ( int ) SCREEN_Y / step - starty; y++ )
  {
    for ( int x = -startx; x <= ( int ) SCREEN_X / step - startx; x++ )
    {
      if ( x > size_x || y > size_y ) 
        continue;
 
      if ( !m[y][x]->wall() ) [B]// Ошибка возникает в этой строчке[/B]
        m[y][x]->draw ( ( x + startx ) *step, ( y + starty ) *step );
      ...
}
olesja
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 6
21.02.2009, 04:37  [ТС]     Смена Компилятора #3
TurboDune,
Спасибо огромное, что Вы так быстро ответили на мое сообщение.
Сейчас на другом компе попытаюсь попробывать Redistributable Package.

Но так и не могу понять - в чем же ошибка и как с нею бороться, потому как ни один ни другой компиляторы не выдают ошибки :'(
TurboDune
22 / 22 / 1
Регистрация: 20.02.2009
Сообщений: 59
21.02.2009, 04:40     Смена Компилятора #4
Ошибка не при компиляции, а ошибка в момент исполнения программы.
Вам необходимо скомпилировать программу и запустить её под отладчиком, чтобы в нём можно было посмотреть детально в каком месте возникает ошибка и попытаться расследовать причины.

P.S. У меня получилось скомпилировать под Visual Studio 2008.
olesja
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 6
21.02.2009, 05:03  [ТС]     Смена Компилятора #5
Что такое отладчик - Debugger что-ли?
Но ведь под Visual Studio 2008 вся игра работает нормально - никак не пойму как в ней можно ошибку найти.

Как Вы знаете:
C++
1
if ( !m[y][x]->wall() ) // Ошибка возникает в этой строчке
Может дело все таки в Дев-С++? Ничего не понимаю

Добавлено через 11 минут 32 секунды
Я скачала Redistributable Package

http://www.microsoft.com/downloads/t...displayLang=en

затем установила его на другой комп,
но так ничего и не вышло.

на моем же компе нет вот этой вот папки:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper
То есть Bootstrapper отсутсвует, а присутсвуют лишь bin, Include, lib.
Что делать?
TurboDune
22 / 22 / 1
Регистрация: 20.02.2009
Сообщений: 59
21.02.2009, 05:25     Смена Компилятора #6
Итак по шагам.
Цитата Сообщение от olesja Посмотреть сообщение
Что такое отладчик - Debugger что-ли?
Да, отладчик и Debugger - это одно и тоже.
Цитата Сообщение от olesja Посмотреть сообщение
Но ведь под Visual Studio 2008 вся игра работает нормально - никак не пойму как в ней можно ошибку найти.
Существует 2 вида сборок (в частности исполняемых файлов): содержащие отладочную информацию - т.н. Debug вариант и не содержащие отладочной информации - Release.
Сборки в Debug варианте используются для отладки программ, проверки правильности работы алгоритмов, поиска утечек памяти и пр. Сборки в Release варианте работают быстрее и как правило являются окончательным продуктом, предоставляемым пользователю. Существует ряд ошибок, которые нельзя найти в Debug сборках. В частности Ваш случай. На то есть ряд причин: компилятор не использует оптимизацию, используемые в программе области памяти заполняются специальными значениями, некоторые переменные автоматически инициализируются 0.

Как Вы запускаете под Visual Studio 2008?
Думаю что, выбираете конфигурацию содержащую слово "Debug" и нажимаете F5. Для отладки Release версии необходимо выбрать соответствующую конфигурацию со словом Release и нажать F5.

Вообщем постарался объяснить как смог %)

К сожалению мне неизвестны принципы заложенные в эту игру, но поверхностный взгляд на код приводит к следующей неувязке.
класс player унаследован от класса field, а также содержит внутри себя указатель на объект класса field. По сути здесь масло-маслянное. Видимо человек, который занимался разработкой этих классов запутался. Отсюда вытекает ряд грубых ошибок: У класса field в конструкторе НЕИНИЦИАЛИЗИРУЕТСЯ ни один член! В частности size_x, size_y; //размеры лабиринта.
Далее в конструктор класса player передаётся указатель на объект класса field, но опять же не происходит никаких инициализаций. В результате при первоначальном отображении картинки происходит обращение к полям size_x, size_y содержащими мусор.
Думаю, что стоит начать именно с устранения этих ошибок.

Добавлено через 6 минут 38 секунд
Цитата Сообщение от olesja Посмотреть сообщение
Я скачала Redistributable Package, затем установила его на другой комп, но так ничего и не вышло.
Не вышло что? Программа не запускается? Выскакивает ошибка? Вы пытаетесь запустить Release сборку?

Redistributable Package призван помочь только в случае, когда выскакивает окошко с сообщением "the application failed to start because the application configuration is incorrect. Reinstalling application may fix the problem."
olesja
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 6
21.02.2009, 06:00  [ТС]     Смена Компилятора #7
Не вышло что? Программа не запускается? Выскакивает ошибка? Вы пытаетесь запустить Release сборку?

Redistributable Package призван помочь только в случае, когда выскакивает окошко с сообщением "the application failed to start because the application configuration is incorrect. Reinstalling application may fix the problem."
Сообщение "the application failed to start because the application configuration is incorrect. Reinstalling application may fix the problem." продолжает свое действие на другом компе, но на моем все работает нормально.

Сейчас я upload игру (что работает), но у которой вываливается это сообщение:
the application failed to start because the application configuration is incorrect. Reinstalling application may fix the problem.

Добавлено через 1 минуту 18 секунд
Пожалуйста, не проподайте, а то Вы единственный который мне отвечает :'(

Добавлено через 16 минут 10 секунд
Вот игра - полностью работает на моем компе.
Поверьте, мне эту "хурму" только бы здать и больше никогда не видеть. Поэтому мне и надо сделать игру доступной учителю - не очень то он порадуется, если его заставить устанавливать VC, а потом конфигур. с СДЛ... хотя на самый худший случай может и придется к этому прибегнуть

Вот ссылка на игру:
http://www.datafilehost.com/download-4e972376.html
TurboDune
22 / 22 / 1
Регистрация: 20.02.2009
Сообщений: 59
21.02.2009, 06:27     Смена Компилятора #8
Вы внимательно читаете всё что написано?

У Вас работает Debug версия. Дальше Вы пытаетесь её перенести на другой компьютер, а там она работать не будет. И даже не поможет Redistributable Package.

Вариант 1.
В Visual Studio выбираете конфигурацию Release. Компилируете программу. В результате получиться то, что можно переносить на другой компьютер. Но там проявляется ошибка и программа сама по себе не работает.

Вариант 2.
Скачиваете файл http://www.datafilehost.com/download-9b42bb3c.html. Запускаете на компьютере, где нет Visual Studio. Внутри этой программы (Depends.Exe) открываете Вашу Maze_Try1.exe. Слева в программе Depends.Exe есть дерево подключаемых модулей. Те модули где нарисован знак вопроса или красный крестик необходимо найти на компьютере где стоит Visual Studio и положить в папку рядом с Вашим файлом Maze_Try1.exe. Далее повторить всю процедуру, пока все модули в программе Depends.Exe не станут отображаться значком, похожим на серенькое окошко с зелёным заголовком. После этого поробовать запустить Ваш Maze_Try1.exe.

Предпочтительнее первый вариант, с исправлением ошибок.
olesja
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 6
21.02.2009, 06:44  [ТС]     Смена Компилятора #9
Спасибо Огромное. Завтра буду пробывать, а то 5 утра уже %)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2009, 06:49     Смена Компилятора
Еще ссылки по теме:

C++ Ошибки компилятора
C++ Выбор компилятора С++
C++ Ошибки компилятора
C++ Директивы компилятора
Параметры компилятора C++

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

Или воспользуйтесь поиском по форуму:
TurboDune
22 / 22 / 1
Регистрация: 20.02.2009
Сообщений: 59
21.02.2009, 06:49     Смена Компилятора #10
Цитата Сообщение от olesja Посмотреть сообщение
Спасибо Огромное. Завтра буду пробывать, а то 5 утра уже %)
А у кого-то 7
Yandex
Объявления
21.02.2009, 06:49     Смена Компилятора
Ответ Создать тему
Опции темы

Текущее время: 15:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru