Сообщение Re: MS VS2013 для XP от 15.10.2017 9:47
Изменено 15.10.2017 9:50 AlexGin
Re: MS VS2013 для XP
Здравствуйте, Vicul, Вы писали:
V>Проапгредился на 2013 студию с 2012. Все прошло гладко, за исключением, что прога перестала запускаться на Win XP.
V>Что бы не заморачиваться со старым проектом, для пробы создал новый MFC диалоговый проект. В тулсете установил V120_xp,
V>Указал в его свойствах статическую сборку. После сборки программа не запускается на ХР.
V>Выдает — is not a valid Win32.
V>На депенсе определил, что прога ищет в kernel32.dll InitializeCriticalsectionEx(), которой нет. Правильно, откуда ей взяться в ХР!
Вообще-то всё вполне логично: функция InitializeCriticalsectionEx() начала поддерживаться от Windows Vista.
Убирай её вызов из своего кода (или заменяй на InitializeCriticalsection) и всё будет OK!
Вот подробности: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms683477(v=vs.85).aspx
V>Значит тулсет V120_xp в 2013 студии до лампочки?
Нет, это не так. В этом плане — всё выставлено правильно.
В VS2012 такой фигни не было.
V>У меня стоит VS2013 Ultimate Update 5. Прогу собирал на 10 винде.
V>Кто, что посоветует?
Ввести некоторый флаг препроцессора (для условной компиляции), который определяет — будет старая винда или нет.
Примерно так:
V>Проапгредился на 2013 студию с 2012. Все прошло гладко, за исключением, что прога перестала запускаться на Win XP.
V>Что бы не заморачиваться со старым проектом, для пробы создал новый MFC диалоговый проект. В тулсете установил V120_xp,
V>Указал в его свойствах статическую сборку. После сборки программа не запускается на ХР.
V>Выдает — is not a valid Win32.
V>На депенсе определил, что прога ищет в kernel32.dll InitializeCriticalsectionEx(), которой нет. Правильно, откуда ей взяться в ХР!
Вообще-то всё вполне логично: функция InitializeCriticalsectionEx() начала поддерживаться от Windows Vista.
Убирай её вызов из своего кода (или заменяй на InitializeCriticalsection) и всё будет OK!
Вот подробности: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms683477(v=vs.85).aspx
V>Значит тулсет V120_xp в 2013 студии до лампочки?
Нет, это не так. В этом плане — всё выставлено правильно.
В VS2012 такой фигни не было.
V>У меня стоит VS2013 Ultimate Update 5. Прогу собирал на 10 винде.
V>Кто, что посоветует?
Ввести некоторый флаг препроцессора (для условной компиляции), который определяет — будет старая винда или нет.
Примерно так:
#ifdef USE_OLD_WIN_XP // If use OLD Windows (Windows XP):
// Делаем то, что ГАРАНТИРОВАННО поддерживается на Windows XP
...
#else // If use contemporary Windows:
// Делаем то, что поддерживается на современных Windows
#endif
Re: MS VS2013 для XP
Здравствуйте, Vicul, Вы писали:
V>Проапгредился на 2013 студию с 2012. Все прошло гладко, за исключением, что прога перестала запускаться на Win XP.
V>Что бы не заморачиваться со старым проектом, для пробы создал новый MFC диалоговый проект. В тулсете установил V120_xp,
V>Указал в его свойствах статическую сборку. После сборки программа не запускается на ХР.
V>Выдает — is not a valid Win32.
V>На депенсе определил, что прога ищет в kernel32.dll InitializeCriticalsectionEx(), которой нет. Правильно, откуда ей взяться в ХР!
Вообще-то всё вполне логично: функция InitializeCriticalsectionEx() начала поддерживаться от Windows Vista.
Убирай её вызов из своего кода (или заменяй на InitializeCriticalsection) и всё будет OK!
Вот подробности: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms683477(v=vs.85).aspx
V>Значит тулсет V120_xp в 2013 студии до лампочки?
Нет, это не так. В этом плане — всё выставлено правильно.
В VS2012 такой фигни не было.
В этом смысле не подскажу, я пользовался VS2013 и VS2015
V>У меня стоит VS2013 Ultimate Update 5. Прогу собирал на 10 винде.
Предполагаю, что сборка на любой современной (от Windows-7 и новее) ОС даст аналогичный результат.
V>Кто, что посоветует?
Ввести некоторый флаг препроцессора (для условной компиляции), который определяет — будет старая винда или нет.
Примерно так:
V>Проапгредился на 2013 студию с 2012. Все прошло гладко, за исключением, что прога перестала запускаться на Win XP.
V>Что бы не заморачиваться со старым проектом, для пробы создал новый MFC диалоговый проект. В тулсете установил V120_xp,
V>Указал в его свойствах статическую сборку. После сборки программа не запускается на ХР.
V>Выдает — is not a valid Win32.
V>На депенсе определил, что прога ищет в kernel32.dll InitializeCriticalsectionEx(), которой нет. Правильно, откуда ей взяться в ХР!
Вообще-то всё вполне логично: функция InitializeCriticalsectionEx() начала поддерживаться от Windows Vista.
Убирай её вызов из своего кода (или заменяй на InitializeCriticalsection) и всё будет OK!
Вот подробности: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms683477(v=vs.85).aspx
V>Значит тулсет V120_xp в 2013 студии до лампочки?
Нет, это не так. В этом плане — всё выставлено правильно.
В VS2012 такой фигни не было.
В этом смысле не подскажу, я пользовался VS2013 и VS2015
V>У меня стоит VS2013 Ultimate Update 5. Прогу собирал на 10 винде.
Предполагаю, что сборка на любой современной (от Windows-7 и новее) ОС даст аналогичный результат.
V>Кто, что посоветует?
Ввести некоторый флаг препроцессора (для условной компиляции), который определяет — будет старая винда или нет.
Примерно так:
#ifdef USE_OLD_WIN_XP // If use OLD Windows (Windows XP):
// Делаем то, что ГАРАНТИРОВАННО поддерживается на Windows XP
...
#else // If use contemporary Windows:
// Делаем то, что поддерживается на современных Windows
#endif