MFC, VS2015 и Windows XP
От: airatsa Россия  
Дата: 27.09.15 18:18
Оценка:
В каком-то смысле продолжу тему "Портирование MFC приложения на новую VS"

Пытаюсь перенести старое приложение с ещё с VC++ 6.0 на VS 2015.
С переносом самим по себе проблем нет.
Есть требование: программа должна работать на Windows XP, и вот с этим проблемы.

При запуске на Windows XP получаю сообщение: "Такой-то exe не является приложением Win32".
Поставил в свойствах проекта Platform Toolset в значение "Visual Studio 2015 — Windows XP (v140_xp)", перекомпилировал.

Теперь получают аналогичное сообщение на MFC "Приложение или библиотека D:\test\mfc140d.dll не является образом программы для Windows NT. Проверьте назначение установочного диска."

Что, и MFC перекомпилировать?

Такое впечатление, что я гребу против течения.
Re: MFC, VS2015 и Windows XP
От: Went  
Дата: 28.09.15 09:57
Оценка:
Здравствуйте, airatsa, Вы писали:
A>Теперь получают аналогичное сообщение на MFC "Приложение или библиотека D:\test\mfc140d.dll не является образом программы для Windows NT. Проверьте назначение установочного диска."
Попробуйте подключить MFC статически.

A>Что, и MFC перекомпилировать?

А это реально?

A>Такое впечатление, что я гребу против течения.

Конечно. MFC хоть и жив, но:
1. Мигрировал на UNICODE. Прослойка для ANSI есть, но она кривая.
2. Компилить на VS2015 под XP тоже определенная экзотика. Новое MFC может начать нечаянно дергать те функции, которых банально не будет в XP. MFC на VS2013 с горем пополам на XP пашет.
3. Сам новый MFC сам по себе тоже далек от идеала.
Re[2]: MFC, VS2015 и Windows XP
От: airatsa Россия  
Дата: 28.09.15 17:32
Оценка:
Здравствуйте, Went, Вы писали:

W>Здравствуйте, airatsa, Вы писали:

A>>Теперь получают аналогичное сообщение на MFC "Приложение или библиотека D:\test\mfc140d.dll не является образом программы для Windows NT. Проверьте назначение установочного диска."
W>Попробуйте подключить MFC статически.

Не подходит, к сожалению. Приложение модульное.


A>>Что, и MFC перекомпилировать?

W>А это реально?

Наверное реально, исходники есть. Согласен, что нужна очень веская причина, чтобы делать это.

A>>Такое впечатление, что я гребу против течения.

W>Конечно. MFC хоть и жив, но:
W>1. Мигрировал на UNICODE. Прослойка для ANSI есть, но она кривая.
W>2. Компилить на VS2015 под XP тоже определенная экзотика. Новое MFC может начать нечаянно дергать те функции, которых банально не будет в XP. MFC на VS2013 с горем пополам на XP пашет.
W>3. Сам новый MFC сам по себе тоже далек от идеала.

Да он всегда был далёк.

Ситуация грустная, похоже так и придётся сидеть на VC 6.0 на виртуалке.
Re: MFC, VS2015 и Windows XP
От: AlexGin Беларусь  
Дата: 29.09.15 17:02
Оценка:
Здравствуйте, airatsa, Вы писали:

A>В каком-то смысле продолжу тему "Портирование MFC приложения на новую VS"


A>Пытаюсь перенести старое приложение с ещё с VC++ 6.0 на VS 2015.

A>С переносом самим по себе проблем нет.
A>Есть требование: программа должна работать на Windows XP, и вот с этим проблемы.

A>При запуске на Windows XP получаю сообщение: "Такой-то exe не является приложением Win32".

A>Поставил в свойствах проекта Platform Toolset в значение "Visual Studio 2015 — Windows XP (v140_xp)", перекомпилировал.

A>Теперь получают аналогичное сообщение на MFC "Приложение или библиотека D:\test\mfc140d.dll не является образом программы для Windows NT. Проверьте назначение установочного диска."


A>Такое впечатление, что я гребу против течения.

1) Если программа не-Unicode — то будут проблемы (надо ставить пакет для поддержки MBCS — ищи его).
2) Попробовать статическую линковку с MFC библиотекой.
3) Если приложение простое — попробовать создать проект в среде VS 2015 и перенести файлы (вместо преобразования всего старого проекта).
У меня проекты, созданные под VS 2003 тяжело портировались в VS 2013, а вот созданные в VS 2008 — портировались в VS 2013 CE довольно просто.

В среде Windows 7/8/10 старое приложение, собранное под VC 2015 — работает корректно или нет?
У меня бывали случаи, когда все собралось, запустилось, но какие-то шероховатости (особенно типа некорректной прорисовки) выползают
Отредактировано 29.09.2015 17:13 AlexGin . Предыдущая версия .
Re[3]: MFC, VS2015 и Windows XP
От: AlexGin Беларусь  
Дата: 29.09.15 17:08
Оценка:
Здравствуйте, airatsa, Вы писали:

A>Ситуация грустная, похоже так и придётся сидеть на VC 6.0 на виртуалке.

Это совсем не обязательно!
Можно просто собрать модули приложения (через создать проект MFC) в новой VC 2015, и перенсти все *.h; *.cpp; и прочие файлы из старых проектов.
Я так успешно делел, когда портировал старые коды на VC 2013.

Тут главное — внимательно переносить все настройки из старого проекта.
Отредактировано 29.09.2015 17:10 AlexGin . Предыдущая версия .
Re[2]: MFC, VS2015 и Windows XP
От: airatsa Россия  
Дата: 29.09.15 19:05
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Здравствуйте, airatsa, Вы писали:


A>>В каком-то смысле продолжу тему "Портирование MFC приложения на новую VS"


A>>Пытаюсь перенести старое приложение с ещё с VC++ 6.0 на VS 2015.

A>>С переносом самим по себе проблем нет.
A>>Есть требование: программа должна работать на Windows XP, и вот с этим проблемы.

A>>При запуске на Windows XP получаю сообщение: "Такой-то exe не является приложением Win32".

A>>Поставил в свойствах проекта Platform Toolset в значение "Visual Studio 2015 — Windows XP (v140_xp)", перекомпилировал.

A>>Теперь получают аналогичное сообщение на MFC "Приложение или библиотека D:\test\mfc140d.dll не является образом программы для Windows NT. Проверьте назначение установочного диска."


A>>Такое впечатление, что я гребу против течения.

AG>1) Если программа не-Unicode — то будут проблемы (надо ставить пакет для поддержки MBCS — ищи его).

В MBCS собрался "из коробки" и заработал

AG>2) Попробовать статическую линковку с MFC библиотекой.


Не вариант, приложение модульное

AG>3) Если приложение простое — попробовать создать проект в среде VS 2015 и перенести файлы (вместо преобразования всего старого проекта).

AG>У меня проекты, созданные под VS 2003 тяжело портировались в VS 2013, а вот созданные в VS 2008 — портировались в VS 2013 CE довольно просто.

Насчёт возможности портирования у меня нет никаких сомнений — понятно, что делать.

AG>В среде Windows 7/8/10 старое приложение, собранное под VC 2015 — работает корректно или нет?

AG>У меня бывали случаи, когда все собралось, запустилось, но какие-то шероховатости (особенно типа некорректной прорисовки) выползают

Довольно сложный кусок GUI заработал на Windows 10 без каких-либо явных проблем.

Проблема не в том, чтобы собрать на VS2015, а чтобы собранный бинарник заработал на Windows XP (см. моё первое сообщение).
Re[3]: MFC, VS2015 и Windows XP
От: AlexGin Беларусь  
Дата: 29.09.15 20:04
Оценка:
Здравствуйте, airatsa, Вы писали:

A>Проблема не в том, чтобы собрать на VS2015, а чтобы собранный бинарник заработал на Windows XP (см. моё первое сообщение).

Я так понимаю, что программа компилировалась НЕ В ОС Windows XP — уже VS 2013 требует, как минимум, Windows 7.
То есть, возможен вариант, что в твоей Windows XP — просто не установлено требуемых библиотек.
Берем redist-pack для VC 2015 и ставим в эту самую Windows XP. Это было проделано?

P.S. Кстати — библиотека D:\test\mfc140d.dll указанная в твоем первом посте относится к DEBUG версии приложения.
Неужели ты запускал в среде Windows XP дебажную версию? На Windows XP следует запускать только релизную!
Отредактировано 29.09.2015 20:38 AlexGin . Предыдущая версия .
Re[4]: MFC, VS2015 и Windows XP
От: airatsa Россия  
Дата: 30.09.15 20:01
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Здравствуйте, airatsa, Вы писали:


A>>Проблема не в том, чтобы собрать на VS2015, а чтобы собранный бинарник заработал на Windows XP (см. моё первое сообщение).

AG>Я так понимаю, что программа компилировалась НЕ В ОС Windows XP — уже VS 2013 требует, как минимум, Windows 7.
AG>То есть, возможен вариант, что в твоей Windows XP — просто не установлено требуемых библиотек.
AG>Берем redist-pack для VC 2015 и ставим в эту самую Windows XP. Это было проделано?

AG>P.S. Кстати — библиотека D:\test\mfc140d.dll указанная в твоем первом посте относится к DEBUG версии приложения.

AG>Неужели ты запускал в среде Windows XP дебажную версию? На Windows XP следует запускать только релизную!

Ларчик просто открывался, достаточно было установить Visual C++ Redistributable for Visual Studio 2015.
Re[5]: MFC, VS2015 и Windows XP
От: AlexGin Беларусь  
Дата: 01.10.15 10:24
Оценка:
Здравствуйте, airatsa, Вы писали:

A>Ларчик просто открывался, достаточно было установить Visual C++ Redistributable for Visual Studio 2015.

Да, уже в 2008-й студии надо ставить redist-pack! Без этого — приложение не запуститься.
Это только в VC 6.0 все просто — скинул dll-ки в рабочий каталог и вперед.
Re[6]: MFC, VS2015 и Windows XP
От: _NN_ www.nemerleweb.com
Дата: 01.10.15 18:57
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Здравствуйте, airatsa, Вы писали:


A>>Ларчик просто открывался, достаточно было установить Visual C++ Redistributable for Visual Studio 2015.

AG>Да, уже в 2008-й студии надо ставить redist-pack! Без этого — приложение не запуститься.
AG>Это только в VC 6.0 все просто — скинул dll-ки в рабочий каталог и вперед.

Не совсем так просто.
Есть ведь обновления msvcrt.dll и mfc42.dll
Например если собирать с VC 6 SP6 а запускать на машине без обновлений , можно наткнуться на нежданчик
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[6]: MFC, VS2015 и Windows XP
От: airatsa Россия  
Дата: 01.10.15 19:41
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Здравствуйте, airatsa, Вы писали:


A>>Ларчик просто открывался, достаточно было установить Visual C++ Redistributable for Visual Studio 2015.

AG>Да, уже в 2008-й студии надо ставить redist-pack! Без этого — приложение не запуститься.
AG>Это только в VC 6.0 все просто — скинул dll-ки в рабочий каталог и вперед.

Ну да, отстал от жизни, в последнее вроде все больше на Java.
А сейчас пришлось заняться старым проектом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.