Проблема с запуском старых программ, созданных в VS6

У меня есть несколько старых программ, которые я создал 7-8 лет назад на C++ в Visual Studio 6.0.

Я пытался запустить их сегодня, но мне не повезло. При запуске программы (или любой другой программы, которую я создал в то время) я получаю следующее сообщение об ошибке:

Сообщение об ошибке VS6.0

По крайней мере, я вижу, что MFC42D.DLL и MSVCP60D.DLL присутствуют в папке программы, но, честно говоря, я уже не помню, что требуется для запуска этих программ, и у меня явно не установлен VS6 на моей текущей машине.

Кто-нибудь знает, что означает это сообщение об ошибке, и что я могу сделать, чтобы решить эту проблему? Я бы хотел снова запустить эти старые программы, чтобы посмотреть, как они выглядят :)

ИЗМЕНИТЬ

Теперь я сделал еще один шаг, после того как поставил новую DLL, но теперь проблема в том, что Direct X 8 не настраивается должным образом. Я думал, что DirectX обратно совместим, но нужно ли мне также устанавливать DX8? Будет ли работать установка двух версий DirectX одновременно?


person Øyvind Bråthen    schedule 18.03.2011    source источник
comment
Вы используете отладочную версию исполняемого файла. У вас не релизная версия?   -  person Cody Gray    schedule 12.01.2012
comment
Я думаю, что я, вероятно, только скомпилировал вариант отладки, а не релизный. Не вызовет ли это дополнительных проблем?   -  person Øyvind Bråthen    schedule 12.01.2012
comment
Нет, именно поэтому вы видите сообщение. Отладочная версия CRT выполняет некоторые дополнительные проверки для облегчения отладки. Вам все равно придется исправить код, вызывающий ошибку, если вы хотите, чтобы все работало правильно. ;-)   -  person Cody Gray    schedule 12.01.2012
comment
Но код работал нормально около 7 лет назад на моей старой старой машине для разработки. Итак, я предполагаю, что на этой машине в каком-то общем каталоге были некоторые файлы, которых у меня больше нет, и которые требуются приложениям, которые я пытаюсь запустить. Все они основаны на DirectX (некоторые также на DirectDraw, который устарел), поэтому я подумал, что это может быть проблемой.   -  person Øyvind Bråthen    schedule 12.01.2012
comment
Ошибка, которую он показывает, выглядит как ошибка повреждения памяти; либо вы вызываете функцию с неправильным соглашением о вызовах (например, cdecl вместо stdcall), либо что-то перезаписывает стек. Я не думаю, что любой из них является результатом отсутствующей зависимости DLL, но это не объясняет, почему это работало на вашей старой машине. Я бы сказал, что способ решить проблему — подключить отладчик к запущенному процессу и посмотреть, где он ставится на колени.   -  person Cody Gray    schedule 12.01.2012
comment
Да, я думаю, что нет другого пути, кроме как использовать некоторое время, если я хочу заставить это работать, так что тогда это просто вопрос, когда у меня будет время, чтобы сделать это;) Спасибо за ваши мысли по этому поводу.   -  person Øyvind Bråthen    schedule 12.01.2012


Ответы (1)


Вам нужна такая программа, как dependencywalker, которая покажет вам все библиотеки DLL, которые нужны вашим программам. Тогда вам нужно будет найти все эти библиотеки DLL.

Другой вариант — найти копию VisualStudio 6 и установить ее на свой компьютер.

Третий вариант — получить более новую версию Visual Studio и попытаться перекомпилировать код.

person Dima    schedule 18.03.2011
comment
Я не знаю. Ваш снимок экрана сначала не отображался, поэтому я ответил на основе вашего комментария о DLL. Однако, учитывая, сколько лет вашим программам, отсутствующие библиотеки DLL определенно стоит проверить. - person Dima; 18.03.2011
comment
У меня установлена ​​Visual Studio 2010, так что я мог бы попробовать, я полагаю, но я не хочу тратить день на то, чтобы это заработало :) Сначала я попробую вариант обходчика зависимостей :) - person Øyvind Bråthen; 18.03.2011
comment
Теперь я сделал еще один шаг, и программа запустилась, но остановилась при инициализации из-за DirectX 8. См. Мое редактирование исходного вопроса. Может быть, вы тоже имеете представление об этом :) - person Øyvind Bråthen; 18.03.2011
comment
Извините, я ничего не знаю о DirectX. - person Dima; 18.03.2011