170 похожих чатов

Подскажите такой вопрос. Кому-нибудь приходилось завозить стандарт C++20 под Windows

7? Как это сделать нынче вообще?

39 ответов

10 просмотров

Ты собирать на win7 хочешь с 20 стандартом?

eugene-martein Автор вопроса
Vadim Ushakov
Ты собирать на win7 хочешь с 20 стандартом?

Мне надо разрабатывать на Win10, но так, чтобы оно работало на Win7 тоже.

Я тут недавно ради лулзов и экспериментов завёл 20-й стандарт на WindowsXP. На 7-ке тоже должно заработать.

eugene-martein Автор вопроса

И как ты ради лулзов его завёл? Я упрашивал начальство, чтобы оно позволило отказаться поддержки XP, а ты ради лулзов это сделал.

А много мест использования с++20, не проще ли будет отказаться и снизить хотя бы до 17 стандарта?

eugene-martein Автор вопроса
Vadim Ushakov
А много мест использования с++20, не проще ли буде...

Да, можно остаться и на 11-ом. Это уже лично моя хотелка, а не требования проекта. Хочу изучать C++20, но так чтобы применять ещё и в работе.

eugene martein
И как ты ради лулзов его завёл? Я упрашивал началь...

Очень просто. 1. Пишешь прогу кросс-платформенно, то есть, чтобы она могла работать и под виндами и под линуксом. 2. Чтобы не запариваться со сборкой и там и там - используешь cmake 3. Ставишь в Linux mingw-w64 (есть в убунтовских репах), и просто говоришь cmake в качестве C++-ного компилятора использовать 'i686-w64-mingw32-g++-posix', добавив (CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++". 4. Собирашь прогу под винду в линуксе. Правда тут стоит уточнить одну вешь. у меня гуя в проге нет, она чисто консольная. Но с гуем тоже можно справится. Есть ещё mxe

eugene martein
Мне надо разрабатывать на Win10, но так, чтобы оно...

стандарт с++ никак не связан с версией Win

eugene-martein Автор вопроса
S.E.
Очень просто. 1. Пишешь прогу кросс-платформенно, ...

Всё в этом подходе прекрасно кроме простой программы с кодом: std::cout << _WIN32_WINNT << std::endl;, которая высрет в консоль 0x0A00

eugene martein
Да, можно остаться и на 11-ом. Это уже лично моя х...

На сайте МС написано, что последняя VS, поддерживаемая на XP - 2019 с 16.7 https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170 вот тут фичи описаны по версиям компиля, частичная поддержка С++20 там есть: https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=msvc-170

Да

eugene martein
Всё в этом подходе прекрасно кроме простой програм...

Ну, гм, хм. Согласен, такого дефайна нет. (Но кто мешает его определить в CMakeLists.txt? или в тулчен-файле?

eugene-martein Автор вопроса
S.E.
Ну, гм, хм. Согласен, такого дефайна нет. (Но кто ...

Он есть, но он не ограничивает использование вызовов WinAPI Win10

Стандарт c++ определяется компилятором а не операционной системой, на которой он работает. Следовательно для того чтобы тебе получить c++ с какого-то стандарта , тебе нужен компилятор, поддерживающий это Стандарт. На Windows 7 можно собрать разные компиляторы, поддерживающие этот Стандарт , и даже можно поставить компилятор на другую машину, например Windows 10, и там собирать приложение под Windows 7

eugene martein
Он есть, но он не ограничивает использование вызов...

Мне он кстати выдал 1282, что равняется 0x502 возможно это связано с тем, что я щас в 10-ке под веслом. Надо будет потом на живой хп-хе проверить

Ilya Zviagin
Стандарт c++ определяется компилятором а не операц...

Ну есть такие интересные вещи в общем... https://github.com/microsoft/STL/blob/a62109595b6d89e08172fdf4beb75a2670fe0cc9/stl/src/atomic_wait.cpp#L138

S.E.
Мне он кстати выдал 1282, что равняется 0x502 возм...

это вообще макрос, и определяется на этапе компиляции

я в курсе. Просто майки в всл-е могли mingw тоже подшаманить. Но не, я глянул, 0x502 это вполне себе #define _WIN32_WINNT_WS03 0x0502 // Windows Server 2003 То есть в теории наносить ограничения он должен.

S.E.
я в курсе. Просто майки в всл-е могли mingw тоже п...

он влияет на набор доступных API в windows.h

eugene martein
Всё в этом подходе прекрасно кроме простой програм...

Потому что это "простая программа" даже не удовлетворяет первый пункт?

eugene-martein Автор вопроса
Egor Kulebyakin
Потому что это "простая программа" даже не удовлет...

Нет никаких ограничений у подключаемых библиотек вызывать API-функции, которых нет на целевой платформе, так как они объявлены в заголовочных файлах компилятора, но в рантайме их может не оказаться. По этой простой причине, например, Qt 6.x с лихвой может собраться таким компилятором, но к величайшему удивлению не будет работать на Windows 7.

eugene martein
Нет никаких ограничений у подключаемых библиотек в...

Начнём с того, что заголовочные файлы компилятора и их содержимое никем не специфицированы и могут меняться как угодно без уведомления. Во-вторых, использование зарезервированных символов в коде — практика как минимум спорная. Ну и в-третьих, где, например, у того же clang в заголовках символ _WIN32_хотьчтонибудь?

eugene-martein Автор вопроса
Alexander "Ternvein" Isaev
Начнём с того, что заголовочные файлы компилятора ...

Да, сторонние библиотеки могут и не проверять никаких дефайнов, они просто юзают системные API напрямую без проверок, чем собственно может заниматься и собранное этим компилятором приложение, как в примере с atomic wait.

eugene martein
Да, сторонние библиотеки могут и не проверять ника...

Могут. Что автоматически делает их не кроссплатформенными. И, соответственно, не проходящими даже первый пункт.

eugene-martein Автор вопроса
eugene martein
STL не кроссплатформенна.

STL не используется уже много лет, если что. А если вы про std, то пишете ерунду.

Хоть 7, хоть Хп. Качаем последнюю студию, которая это поддерживает. И там пишем. Если всё-таки хотим чего-то большего, то можно взять последний clang, но использовать sdk целевой версии. Таким образом можно получить иногда чуть больше. Ну или лет через 10 также спокойно использовать последний clang, а sdk всё от той же старой 2019 студии

eugene-martein Автор вопроса
Michael Chambers
Хоть 7, хоть Хп. Качаем последнюю студию, которая ...

Свежо питанию, да серется с трудом. Без плясок с бубном вокруг той же 2019-ой студии, копаний в реестре, переносом частей из старых студий не обойдётся, если вдруг приспичит к ней прикрутить Windows 7.1 SDK.

eugene martein
Свежо питанию, да серется с трудом. Без плясок с б...

Возможно придется что-то сделать да. Но возможность все же остаётся

eugene-martein Автор вопроса
Michael Chambers
Возможно придется что-то сделать да. Но возможност...

Ну и опять же, речи в таком случае про C++20 уже не идёт.

eugene martein
Ну и опять же, речи в таком случае про C++20 уже н...

Всё ещё идёт. Просто на уровне стдлибы будет то что есть сейчас и всё. Все новое, что заедет в компилятор, будет у вас

eugene-martein Автор вопроса
eugene-martein Автор вопроса
Michael Chambers
Что это?

Вывод тулкита Windows 7.1 SDK при включении современного компилятора 2022-ой студии. С ним возможна сборка только на компиляторе от 2010-ой студии.

eugene martein
Вывод тулкита Windows 7.1 SDK при включении соврем...

Так речь шла про использование clang в таком сценарии, а не про msvc

eugene martein
Вывод тулкита Windows 7.1 SDK при включении соврем...

Вообще, не понял что это. Под семёрку и 2019 всё успешно собирает. Собственно и кусок 20 стандарта там есть, и он включается для семёрки успешно

eugene martein
Нет никаких ограничений у подключаемых библиотек в...

Какое апи? Какие функции? Вы свой пример забыли?

Похожие вопросы

Обсуждают сегодня

Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
Обновленный chat тестили уже господа? Готовимся на заводы ? Простой проект на ларавель собирает за 1 ответ..
Jacov Borisov
14
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
11
кому не сложно распишите пожалуйста для какой цели тут вот эти скобки и в них пихается указатель?
Михаил Helper
15
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
словил ушиб всей бабки Uncaught Error: Class "EvolutionCMS\Main\MainServiceProvider" not found in и ни composer update, ни composer dump-autoload не помогает что ещё сделать...
Oleg Nosov
7
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
Или мне дублировать структуру с информацией о следующем потоке в адресное пространство текущего потока?
One
9
Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
Серьезно? Вот прям так на глагне на первом экране?
Sasha Beep
8
Карта сайта