Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218

Studio 2022 и C++20 - можно ли компилировать для Win7? И как правильно работать с кодировкой

16.01.2025, 16:30. Показов 12442. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, напомните пж, как понизить требования к платформе при разработке в последней версии студии? По умолчанию она добавляет зависимости, которых нет в семёрке, а хотелось бы универсальности. Или последний стандарт уже несовместим со старыми системами?

Почему вопрос возник... Потому что понадобилось мне вызвать однобайтовую версию API. Начал гуглить про преобразования кодировки в локальную и обнаружил, что локальной уже никто не пользуется, а однобайтовые апи теперь поддерживают юникод! И для преобразования std::wstring используют WideCharToMultiByte или вообще вот такой код:

C++
1
OutputDebugStringA(std::wstring_convert<std::codecvt_utf8<wchar_t>>().to_bytes(msg)).c_str())
Чтобы это работало, нужна минимум Win10 и строчка в манифесте приложения. Но поскольку в чужом приложении этот код работает, я так понял, что последняя версия среды разработки добавляет это автоматически. Правильно понимаю?

В общем, вопрос.. Как отказаться от этой прелести и настроиться на Win7 в качестве целевой платформы? И как по-простому преобразовать wstring в установленную локаль типа 125х

Вот такой код не слишком замороченный? Выглядит как макаронина, тут нет потенциала для упрощения?

C++
1
2
3
4
5
 define TO_LOCALE(msg) (std::is_same_v<decltype(msg), std::wstring> ? \
        std::wstring_convert<std::codecvt_byname<wchar_t, char, std::mbstate_t>>(std::locale().name()).to_bytes(msg) : \
        std::string(msg))
 
 define DBG(msg) OutputDebugStringA(std::format("{}:{} {}\n", __FUNCTION__, __LINE__, TO_LOCALE(msg)).c_str())
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.01.2025, 16:30
Ответы с готовыми решениями:

Как установить сторонние библиотеки для C# в Visual Studio 2022
Здравствуйте товарищи. У меня проблемка появилась, которую я ни как не могу решить, вообще не получается. Проблема является то, что я не...

Можно ли на Visual Studio 2022 установить пакет разработчика .Net3.5?
Добрый день. Подскажите, можно ли на Visual Studio 2022 установить пакет разработчика .Net3.5 ? У меня что-то не хочет прикручиваться...

Расширение для Visual Studio 2022 на фреймворке Visual Studio Community Toolkit
Переписываю свое старое расширение под новую 2022 студию, вот нашел вроде хороший фреймворк:...

9
Злостный нарушитель
 Аватар для Verevkin
10242 / 5670 / 1260
Регистрация: 12.03.2015
Сообщений: 26,265
16.01.2025, 17:02
Цитата Сообщение от Postscripter Посмотреть сообщение
В общем, вопрос.. Как отказаться от этой прелести и настроиться на Win7 в качестве целевой платформы? И как по-простому преобразовать wstring в установленную локаль типа 125х
Зачем это всё? Почему бы просто не юзать юникод изначально? Тогда не надо будет ничего и никуда конвертировать.
0
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
16.01.2025, 17:15  [ТС]
Юникодная OutputDebugStringW перехвачена , поэтому мне понадобилась А-версия
0
фрилансер
 Аватар для Алексей1153
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,003
16.01.2025, 21:08
Цитата Сообщение от Postscripter Посмотреть сообщение
перехвачена
кто посмел?
0
Модератор
Эксперт Java
 Аватар для alecss131
2843 / 1352 / 403
Регистрация: 11.08.2017
Сообщений: 4,320
Записей в блоге: 2
16.01.2025, 21:28
Студия это не только ценный мех... компилятор, но и IDE. Там помимо самой свежей версии компилятора v143 (2022) можно поставить так и старые v140 (2015), v141 (2017) и v142 (2019). То же касаемо WinSDK , но версии там только для Windows 10 (от 10.0.18362) и 11 (что подходит и для 10, версии 10.0.26100).
Для одной из старых версий есть компонент поддержки аж для WinXP (но deprecated).
Обязательно ли нужен C++20? Мое мнения для 20 стандартна на 7 винде студия плохой выбор. А для юникода можно воспользоваться другими либами, например icu. По идее 20 стандарт должна поддерживать и 2019 (142), поддерживает ли она 7 не знаю
1
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
17.01.2025, 00:12
Цитата Сообщение от alecss131 Посмотреть сообщение
2015
это вроде крайняя, которую можно поставить в win7 и пытаться собирать что-то с -D _WIN32_WINNT=0x0501 для XP.
Но в самом коде бывает то что и компилятор поймёт и в .lib найдёт... а по факту для dll какой-то <= vista
даже собирая под самой XP , каким-нибудь 2010... bcrypt.dll какую-нибудь притянет, только ради навороченного rand() :)

С манифестами тоже муть какая-то , вроде на ucrt собирают... и половина .exe даже запускается и работает в XP,
но в каком-то попадается это <manifest ...v2> и всё ,) зря только качал это winlib_mingw-ucrt ))
1
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
17.01.2025, 04:20  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
кто посмел?
Обещаю вернуть как было, когда закончу Работаю в x64dbg с чужим плагином, он разговорчивый и пишет там всякое в журнал (да и хост тоже), а я в своей библиотеке этот момент отслеживаю.

Цитата Сообщение от ft4l Посмотреть сообщение
2015
это вроде крайняя, которую можно поставить в win7
Для разработки у меня есть Win11, тут надо чтобы именно готовый продукт запускался на широком диапазоне систем. Прогуглю момент флагами -D _WIN32_WINNT

Цитата Сообщение от alecss131 Посмотреть сообщение
Обязательно ли нужен C++20?
Да не особо. Но с ним код становится проще, там работа со строками - std::transform с лямбдами, std::format, ends_with, инициализация нестатических переменных в описании класса...

Ладно, я понял, придётся свои хотелки ограничивать)
0
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
17.01.2025, 05:12
Цитата Сообщение от Postscripter Посмотреть сообщение
момент флагами -D _WIN32_WINNT
Для WINAPI вообще-то юзается
[QUOTE]Using the Windows Headers
...
The following table indicates the common macros you must define to target each major operating system release. (Individual header files may use different macros; therefore, if compilation problems occur, check the header file that contains the definition for conditional definitions.)

Minimum system required Macros to define
Windows Server 2003 _WIN32_WINNT>=0x0502 WINVER>=0x0502
Windows XP _WIN32_WINNT>=0x0501 WINVER>=0x0501
 
...

Internet Explorer 6.0 _WIN32_IE>=0x0600
Internet Explorer 5.6 _WIN32_IE>=0x0560
...

Но оно и при кросспламформенном задействуется обычно.

Для CRT оно там вроде всё predefined... взависмости от версии компилятора
может только флаги ещё на них влияют, и кросскомпиляция 32-битным с _WIN64.

А насчёт чего-то моложе 2010 я совсем не при делах )) ... ucrt там или msvcrt или на выбор RunTime.
0
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
17.01.2025, 05:42  [ТС]
Так совместимость как раз ломают две вещи. Слишком свежий сишный рантайм (как его выбирать я тоже хз пока, наверно никак) и всякие versioned api, которые xxx-l1-1-1.dll Надо будет разобраться (никогда не пользовался ей), влияет ли эта директива на выбор версии winapi. И насколько старые апи ещё поддерживаются. То есть, если я в 2025 году вдруг объявлю директиву _WIN32_WINNT_WIN7, изменится ли в таблице импорта kakaya-to-hren-l1-1-1.dll на kernel32.dll
0
Невнимательный
 Аватар для ft4l
2840 / 1268 / 358
Регистрация: 08.02.2013
Сообщений: 7,391
Записей в блоге: 2
17.01.2025, 07:13
Цитата Сообщение от Postscripter Посмотреть сообщение
kakaya-to-hren-l1-1-1.dll
К меня в XP даже такие прилетели ... с каким-то rеdist 140 или не с ним... не помню

ucrtbase.dll
и ровно 40 штук api-ms-win-*****-l1-1-0.dll

...

Запустил сейчас в семёрке какое-то новое AIO/AllInOne-redist
таких файлов 65, и только один с еденичкой в конце... возможно раньше чего-то я подсовывал ))... или нет
распаковал winlibs-i686-posix-dwarf-gcc-14.2.0-mingw-w64ucrt-12.0.0-r2.7z
... прошлогоднее вроде
и работает gcc --help
А в XPx64(0x0502) тчно жаловалось на манифест... на что-то с .v1
такой вроде он полностью
XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
 <application>
  <windowsSettings>
   <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
  </windowsSettings>
 </application>
</assembly>
Но там ещё куча файлов с зависимостями от этих api-ms-win....-l1-1-0.dll но без манифеста,
и они работали и там... а зависимости во всех вроде находило и находило в /system32/
...
Получается что .NET==4.0 в XP это не нравится, а .NET==4.6.1 в семёрке нормально заходит.
Если не ошибаюсь...
... с 4.6 в win7 тоже какие-то танцы были... на чистую свежую ось ставилось вместе VS какой-то, а на чуть поезженную ни в какую.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.01.2025, 07:13
Помогаю со студенческими работами здесь

Как правильно установить звуковой драйвер для Win7?
Как правильно установить звуковой драйвер для Win7? Помогите пожалуйста!!! Уже запарились.

Как заставить работать лпт порт для программы Mach3 на Win7 x64?
Всем доброго времени суток. Возможно ли запустить LPT-порт на 64-разрядной системе? Находил информацию про inpout32, но так и не смог никак...

Как правильно компилировать?
Вопрос наверное звучит очень глупо и миллион раз поднимался, но ответа найти ни в гугле ни на форуме я не смог. Мне даже не нужна...

Как правильно компилировать?
Все доброе время суток. Народ, не подскажете как компилировать программы написанные в Pascal ABC через Delphi 7? Я открываю свой файл...

Подключение библиотек для C в visual studio 2022
Хочу подключить в проект 2 библиотеки для работы со звуком. PortAudio я установил с помощью NuGet в самой визуалке. А libmpg123 скачал с...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru