Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
У меня проектов C++ немного. До сих пор все C++ делал в 2005 EE. Причем специально держу у себя вот эту древнюю сборку: Microsoft Visual Studio 2005 Version 8.0.50727.762 (SP.050727-7600) Microsoft .NET Framework Version 2.0.50727 SP (то что написано в About). При этом инсталлятору проги (на XP/2003) достаточно проверить наличие .Net 2.0 SP1 или выше и установить (если нету). После этого всегда и везде все работает. На Висте и выше (до 10-ки) всегда все работает без доустановки чего либо. Все. Никаких C++ redistributable никогда не надо!!! Речь идет о чисто C/C++ (никаких .Net), но установка .Net указанной версии всегда спасает (мистика, но факт, проверено годами). Но до сих пор у меня были только 32-битные C/C++. Теперь у меня dll, которую надо сделать 2 варианта: Win32 и x64. Сделал я пока на Win10 x64 VS2013 Ultimate C++ (Release x64 и Release Win32). x64 на Win10 (где делал) работает отлично, про Win32 могу пока только сказать что компилируется. В свойствах проекта пока что стоит Общие-> Набор инструментов платформы = Visual Studio 2013 (v120). И сдается мне что я с этим "набором" далеко не уеду. Мне надо: 1) чтоб dll была Win32 и x64 (две версии) 2) чтоб работало XP->Win10-> (на всех OS начиная с XP, из-за одной dll от поддержки устаревшей XP отказываться пока не собираюсь) 3) чтоб не заниматься маразмом с "C++ redistributable" Т.к. большой "проект" содержит не только C++ но и .Net, то требование для него по любому: XP/Win2003: .Net 2.0 SP1 Vista-Win10: .Net 4.5 (или выше) (32-битник C++ VS2005 "v.50727" под это дело гарантированно запустится вообще на любой системе.) Но вот как мне быть с 64-битником? В VS2013 есть опция Общие-> Набор инструментов платформы = Visual Studio 2013 - Windows XP (v120_xp). Но будет ли это по дефолту запускаться "где попало"? (без "C++ redistributable")? Или что м.б. надо сделать, чтоб запускалось "где попало"? Dll я бы не сказал что сложная, там сплошные Win API (сделана из MS-примера из SDK). Причем оригинальный MS-код как раз был под любимую мной 2005-ю студию. Сдаунгрейдить под 2005-ю я наверно смогу без проблем, но у меня там нет x64. Как поступить? P.S. Я пока еще ничего не делал, пока у меня dll в VS2013, нужно как бы правильное направление "финализации/рантаймизации" понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 06:43 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77В VS2013 есть опция Общие-> Набор инструментов платформы = Visual Studio 2013 - Windows XP (v120_xp). Но будет ли это по дефолту запускаться "где попало"? (без "C++ redistributable")? Или что м.б. надо сделать, чтоб запускалось "где попало"? Не будет. Но поставить надо, иначе в скомпилированном коде могут оказаться вызовы функций WinAPI, которых в XP не было. Чтобы рантаймы не таскать можно статическую линковку сделать. В свойствах проекта : С/С++ => Code generation => Runtime Library = Multi-threaded (/MT) Но тут тоже есть подводные камни: если внутри процесса используется несколько разных рантаймов возможен их конфликт, например при выделении памяти одним и освобождение другим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 07:21 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Но вот как мне быть с 64-битником?Никак. Технически, вероятно, проект с настройками "для XP" соберётся (и будет работать) в любой разрядности, но смысла нет. Windows Server 2003 x64 сейчас - не имеет смысла. XP64 официально не продавалась и вообще не имеет смысла. Но будет ли это по дефолту запускаться "где попало"? (без "C++ redistributable")? Без рантайма работает то, что статически собрано. С отдельным исполняемым файлом - проблем нет. Исполняемый файл и разделяемая библиотека создают проблему "статических копий рантайма". Я не знаю насколько это критично вообще и критично ли конкретно для вашего проекта. Или что м.б. надо сделать, чтоб запускалось "где попало"? Проще всего - установить необходимый рантайм. Я, например, вообще "закатываю" рантаймы с VS2005 по VS2015 в образ системы (w7). Пришлось, правда, повозиться, чтобы ставить всё через msi, без exe-обёрток. Все рантаймы , до VS2015 включительно, совместимы с Windows XP SP3/Server 2003 SP2. P.S. Сервиспаки - важны, т.к. есть манифесты, на которых Windows XP SP2 будет валиться в синьку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 07:30 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Dima T, Basil A. Sidorov, >Но тут тоже есть подводные камни: если внутри процесса используется несколько разных рантаймов возможен их конфликт >Исполняемый файл и разделяемая библиотека создают проблему "статических копий рантайма". Я не знаю насколько это критично вообще и критично ли конкретно для вашего проекта. Основной процесс называется C:\WINDOWS\system32\fxssvc.exe (Windows Fax Service) Он вызывает "мою dll" (провайдер FSP) - о которой речь. На разных OS fxssvc.exe естественно "своей версии" и уж не знаю как это с рантаймами сочетается, но принцип один и документация единая (начиная с Win2000). Важно, что на x64 -это 64-битный процесс (даем на вход 64-битную dll), на Win32-соотв. 32-битный. Dima TЧтобы рантаймы не таскать можно статическую линковку сделать. В свойствах проекта : С/С++ => Code generation => Runtime Library = Multi-threaded (/MT) У меня (это DLL) стоит: С/С++ => Создание кода => Библиотека времени выполнения= Многопоточный DLL(/MD) Оно? Так оставить? И скорее всего это пришло из исходного SDK-примера (я такие вещи стараюсь вообще не трогать). Basil A. SidorovДмитрий77Но вот как мне быть с 64-битником?Никак. Технически, вероятно, проект с настройками "для XP" соберётся (и будет работать) в любой разрядности, но смысла нет. Windows Server 2003 x64 сейчас - не имеет смысла. XP64 официально не продавалась и вообще не имеет смысла. Предполагается всего 2 единых файла (каждый должен работать "от" и "до" на своей разрядности): 1) _Win32.dll 2) _Win64.dll Предполагаю скомпилировать их "идентично" (меняя только Win32/x64). x64 будет тестироваться на Win10, 8.1, Vista, 2012R2 -то что есть для теста под рукой, 2016 видимо поставлю, еще его не видел Win32 - на Win7, XP, 2003 -опять же что уже есть на тест-машинах. Если эта пара будет работать в этом наборе, то предположительно будет работать и на всем остальном (специально ставить XP x64 2003 x64, равно как и Win10 32бит сейчас , которых у меня не стоит понятно не собираюсь.) Ну, если ошибусь, то придется допиливать баги по необходимости, но думаю не ошибусь если добьюсь работу пары на указанных в пред. абзаце. Вопрос даунгрейда до 2005 c компиляцией в рантайм "8.0.50727.762" и компиляцией как-то под x64 нет смысла рассматривать? Просто "8.0.50727.762" - это то чему я 100% доверяю (потому что это проверено 10-летием, а мне надо чтоб работало, а не "модные" тяжеловесные довески за собой таскать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 08:15 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77У меня (это DLL) стоит: С/С++ => Создание кода => Библиотека времени выполнения= Многопоточный DLL(/MD) Оно? Так оставить? И скорее всего это пришло из исходного SDK-примера (я такие вещи стараюсь вообще не трогать). Речь не о том что ты DLL делаешь, а о том что твоя DLL будет использовать рантайм в виде внешних DLL. Переключай на /MT, тогда рантайм будет внутри твоей DLL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 08:26 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Dima TДмитрий77У меня (это DLL) стоит: С/С++ => Создание кода => Библиотека времени выполнения= Многопоточный DLL(/MD) Оно? Так оставить? И скорее всего это пришло из исходного SDK-примера (я такие вещи стараюсь вообще не трогать). Речь не о том что ты DLL делаешь, а о том что твоя DLL будет использовать рантайм в виде внешних DLL. Переключай на /MT, тогда рантайм будет внутри твоей DLL. главное не забывать смотреть depend'ом после сборки не осталось ли ссылок на рантайм dll. (например, при включении поддержки OpenMP - dll рантайм будет цепляться всегда) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 08:44 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Dll я бы не сказал что сложная, там сплошные Win API она с или с++ ? при некоторых усилиях можно собраться без С-рантайма совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 08:57 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Собраться-то можно, вопрос только в том - покрывает ли системное подмножество функции CRT множество функций CRT, используемое в программе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 09:06 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Скомпилировал (пока Win32): Общие-> Набор инструментов платформы = Visual Studio 2013 - Windows XP (v120_xp). С/С++ => Создание кода => Библиотека времени выполнения= Многопоточная(/MT) DLL стала в 3 раза больше по размеру, на XP ну как минимум "схватилась" (девайсы появились в списке и ошибок в журнал не пишет, до этого (без /MT и/или без v120_xp ) было Err126 Не найден/не удалось загрузить модуль) Но меня смущает, что при компиляции появилась куча ругани: Код: plaintext 1. [ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. И вот забивать мне на это или что-то надо сделать умное? ИзопропилДмитрий77Dll я бы не сказал что сложная, там сплошные Win API она с или с++ ? при некоторых усилиях можно собраться без С-рантайма совсем. Я в этом не разбираюсь, но скорее C чем C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 17:05 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, https://msdn.microsoft.com/ru-ru/library/2029ea5f.aspx по новому стандарту они признаны небезопасными и устаревшими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 17:11 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77И вот забивать мне на это или что-то надо сделать умное? Это потенциальные места где может произойти переполнение буфера. По хорошему лучше заменить на рекомендуемые аналоги. Сложного в этом ничего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 17:19 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan),Dima T, а у меня в коде НЕТУ функций, на которые он "ругается". Предупреждения возникают только если поставить Общие-> Набор инструментов платформы = Visual Studio 2013 - Windows XP (v120_xp). (/MT /MD пофиг) Так какой путь правильный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 17:37 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, #include <stdio.h> вместо <cstdio> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 17:41 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Дмитрий77, #include <stdio.h> вместо <cstdio> А у меня и есть #include <stdio.h> и НЕТУ <cstdio>. Но, МИСТИКА. Общие-> Набор инструментов платформы = Visual Studio 2013 ( v120 ). !!!без v120 _xp С/С++ => Создание кода => Библиотека времени выполнения= Многопоточная(/MT) И оно завелось на XP (Как проверить, что у меня там "вдруг случайно" на системе уже не стоит "рантаймов", в программах там вижу явно только VC++ 2008 EE, 2008 Redistr.-x86 9.0.30729, несколько SDK VS 2008 - не помню откуда взялись, система тестовая почти чистая, но к VS2013 мне кажется это никаким боком не соотносится). Dima TНо поставить <прим.: v120 _xp > надо, иначе в скомпилированном коде могут оказаться вызовы функций WinAPI, которых в XP не было. А мож не надо и /MT достаточно? Если компилятор без нее не ругается и dll на XP заводится? Вряд ли там "могут оказаться вызовы функций WinAPI, которых в XP не было", пример из SDK древний, в MSFax если чего и менялось, то только на Висте и с FSP-dll кухней это никак не связано, свои API если и добавил парочку, то точно не "новых", а использовал в основном все в духе SDK-примера. Надо б еще на Win2003 проверить, она у меня вообще чистая (правда .Net 3.5 там уже стоит). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:08 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
[quot Dima T]Дмитрий77Чтобы рантаймы не таскать можно статическую линковку сделать. В свойствах проекта : С/С++ => Code generation => Runtime Library = Multi-threaded (/MT) Но тут тоже есть подводные камни: если внутри процесса используется несколько разных рантаймов возможен их конфликт, например при выделении памяти одним и освобождение другим. Это практически неработоспособно, если приложение использует модули (.dll), кроме системных. В общем, правило такое, если приложение использует .dll-и, и хотя бы одна .dll использует CRT, то так делать нельзя. Нужно линковать CRT тоже динамически. Иначе -- да, в приложении будет несколько экземпляров CRT, и нарушение ODR со всеми последствиями (неизвестными). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:09 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто практически неработоспособно преувеличение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:17 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Как проверить, что у меня там "вдруг случайно" на системе уже не стоит "рантаймов" на зависимости своей библиотеки глянь - и увидишь что она пользует кроме kernel etc (Dependency Walker, например) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:20 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
MasterZivВ общем, правило такое, если приложение использует .dll-и, и хотя бы одна .dll использует CRT, то так делать нельзя. Нет, сторонние dll не использует. Только ms-API. Со сторонней кухней оно общается исключительно через mailslot-ы. Хотя я туда добавил много отсебятины с использованием в частности std::wstring, std::wstringstream, надо же как то с этими вашими строками бороться (но это здесь не обсуждается, переписывать код dll уже не буду, она полностью рабочая и уже где-то месяц запущена гоняется тестово на Win10 без проблем). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:23 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Вряд ли там "могут оказаться вызовы функций WinAPI, которых в XP не было", пример из SDK древний, в MSFax если чего и менялось, то только на Висте и с FSP-dll кухней это никак не связано Думаю все-таки надо. Дело не в твоем коде. Это не твои вызовы, это вызовы самого рантайма. У меня что-то типа "Hello world" не стартовало под XP, т.к. GetTickCount64() зачем-то надо рантайму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:29 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77std::wstring, std::wstringstream значит с++ если эти строки и другие экземпляры классов за пределы DLL не передаются,Exceptions не используются и нет никаких фокусов - статическая линковка будет жить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:31 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Dima TУ меня что-то типа "Hello world" не стартовало под XP, т.к. GetTickCount64() зачем-то надо рантайму. и toolset XP - совместимый был? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:35 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Дмитрий77MasterZivВ общем, правило такое, если приложение использует .dll-и, и хотя бы одна .dll использует CRT, то так делать нельзя. Нет, сторонние dll не использует. Не сторонние, а ЛЮБЫЕ DLL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:37 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто практически неработоспособно, если приложение использует модули (.dll), кроме системных. В общем, правило такое, если приложение использует .dll-и, и хотя бы одна .dll использует CRT, то так делать нельзя. Нужно линковать CRT тоже динамически. Иначе -- да, в приложении будет несколько экземпляров CRT, и нарушение ODR со всеми последствиями (неизвестными). Работоспособно, если не используются все доступные навороты С/С++. Какой может быть глюк если функция из DLL получает буфер и просто его заполняет? Или наоборот, получает заполненный и что-то с ним делает? У меня это отлично работает. Этих CRT уже 100500. Когда писал DLL для FoxPro6 использовал динамический рантайм, он был один на всех. Эта же DLL отлично работает с FoxPro9 где рантайм 7.1, при этом другие виндовые DLL грузят в т.ч. старый рантайм. Переехав с VC6 на VC2015 переключил на статическую линковку. Единственный косяк VC2015 в том что используются команды не поддерживаемые процами ниже Pentium III ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:47 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
ИзопропилDima TУ меня что-то типа "Hello world" не стартовало под XP, т.к. GetTickCount64() зачем-то надо рантайму. и toolset XP - совместимый был? Нет. Я к тому и написал что надо совместимый выставлять. ЕМНИП это было в MSVС2012 где совместимость с XP просто выкинули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 18:49 |
|
||
|
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
|
|||
|---|---|---|---|
|
#18+
Изопропил, >если эти строки и другие экземпляры классов за пределы DLL не передаются, НЕТ, используются только внутри (и то не везде) для манипуляций со склейкой строк и т.п. Экспортируемые ф-ции DLL стандартно задокументированы MS и вызываются как __stdcall там везде LPWSTR и им подобные С другой стороны у меня mailslot-ы, но без "приведения типов" никакие строки туда опять же не уходят. >Exceptions не используются Конструкций типа Net-оских try..catch я нигде не использую(знаю что в C есть что-то похожее) >нет никаких фокусов за мной замечены способности фокусника? думаю нет Dima TДмитрий77Вряд ли там "могут оказаться вызовы функций WinAPI, которых в XP не было", пример из SDK древний, в MSFax если чего и менялось, то только на Висте и с FSP-dll кухней это никак не связано Думаю все-таки надо. Дело не в твоем коде. Это не твои вызовы, это вызовы самого рантайма. У меня что-то типа "Hello world" не стартовало под XP, т.к. GetTickCount64() зачем-то надо рантайму. Нафига v120_xp? Если стартует и без него? Чтоб читать ругань компилятора про deprecated? Я так понимаю про C++, оно либо сразу не стартует, либо если стартует (а у меня стартует), то уже работает как часики. Или может вдруг внезапно где-то скрашить? Я думаю надо пока оставлять Код: plaintext 1. 2. и не парить мозги ни себе ни людям. Если что не так, обязательно вылезет (причем быстро вылезет) как соберу пакет и инсталлятор и протестирую в комплексе на тех OS что собирался. Счас я только могу убедится в том что dll зацепилась системой и девайсы видятся в MSFax после старта службы, даже логи dll еще не смотрел, хотя интуитивно понятно, что все хорошо уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2017, 19:18 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39436101&tid=2018202]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 275ms |

| 0 / 0 |
