Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326

Открыть новую тему     Написать ответ в эту тему

Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопросы по программированию на C/С++

 
  • Справочники, книги
  • Выбор IDE (среды программирования)
     
    Постарайтесь дать как можно больше информации о возникшей проблеме - это в конце концов в ваших же интересах чтобы вам помогли.

    Решения конкретных задач собираются и обсуждаются в теме Задачи по C/С++ .

    Прежде чем просить помощи в задании...
    Если позарез надо и вы даже готовы заплатить

    Как правильно задавать вопросы, если вы хотите получить ответ.

    Полезные ссылки:
    C++(eng)

  • Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 13:37 06-05-2004 | Исправлено: AZJIO, 19:45 12-05-2014
    KChernov



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rock

    Цитата:
    OpenSource всех убил. А сам OpenSource -- не то, чтобы полный отстой, но специфический.

    Опенсорс хорошо, если сам разработчик
    А так да - текстовый редактор вон - и то самому писать приходится (

    Всего записей: 2779 | Зарегистр. 20-04-2004 | Отправлено: 14:49 11-03-2025
    reversecode



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Так вы место на диске сравниваете что ли? Кстати с учётом нтфс-сжатия?
    Я то думал, что сколько студия памяти жрёт

    в исходном вопросе был вопрос сколько студия занимает по минимуму(установленная)
    хз что такое ntfs сжатие, у меня обычный ntfs

    Цитата:
    А смысл вообще, когда ссд минимум на 1Тб + обычно и хдд хотя бы на несколько Тб есть?!?

    все зависит от железа и других возможностей
     
    программисты как правило стремятся быть рациональными в трате ресурсов
    которые используют для кодинга

    Всего записей: 2157 | Зарегистр. 06-03-2008 | Отправлено: 14:58 11-03-2025
    Rock

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    paparazzo

    Цитата:
    но с ней созданная библиотека DLL крашит основной проприетарный платный софт.

    Вот тут уже пошла тяжеловоспринимаемая херь, вроде совместимости ABI (application binary interface). Майкрософт -- лучший в этом плане (поскольку ориентирован на бабки), у них совместимость ABI сейчас гарантируется до VS2015 включительно (это бесконечно круто). Чтобы заработало, надо пересобирать новым компилятором ВСЕ.
    Кстати, люди уже лет пять ноют, что Майкрософт, ломай ABI (для С++) и делай новые современные фентифлюшки. Возможно, VS2022 -- последняя из плеяды. Потом опять сломают. Так что, если подождете лет пять, то будет смысл перепрыгнуть через ABI VS2015-VS2022 сразу на новый.

    Цитата:
    Но нет функции sprintf, не компилирует никак.

    Для sprintf нужно определить _CRT_SECURE_NO_WARNINGS либо в коде (перед включением стандартных заголовков), либо в проекте Студии. Это тоже со стороны выглядит как "сломали".
    Вообще говоря, Ваш код не должен потребовать серьезных изменений. А если потребует, то только в тех местах, где все особенно плохо. Поверьте.  
    НО! Если нет доступа к исходникам платных third-party, то без шансов.

    Всего записей: 1293 | Зарегистр. 10-04-2003 | Отправлено: 15:07 11-03-2025
    paparazzo



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Кстати для новых процов новые компиляторы могут выдавать лучший код

     
    Простестировал на решении систем нелинейных уравнений.
    Код откомпилированный в VS2022 работает на 10% быстрее, чем VS2010, при одинаковых параметрах.
    Несколько раз прогнал, да 10% разница.
     
    Так что есть в этом доля правды.
     
    Добавлено:

    Цитата:
    Для sprintf нужно определить _CRT_SECURE_NO_WARNINGS либо в коде (перед включением стандартных заголовков), либо в проекте Студии

     
    Это понятно, но не помогает. -  
    Ошибка    LNK2019    ссылка на неразрешенный внешний символ sprintf в функции UserParamNames.
    UPD пофиксил через legacy_stdio_definitions.lib В общем пора переходить на VS2022, всё решаемо.

    Всего записей: 3875 | Зарегистр. 06-04-2003 | Отправлено: 15:11 11-03-2025 | Исправлено: paparazzo, 15:25 11-03-2025
    KChernov



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    reversecode

    Цитата:
    программисты как правило стремятся быть рациональными в трате ресурсов
    которые используют для кодинга

    Ну тут не все программисты - кому-то просто главное чтоб работало.
    Ну и да, если через железо можно ускорить работу за разумные деньги (например не оптимизируя вручную список установленного) - имхо странно от этого отказываться
     

    Цитата:
    хз что такое ntfs сжатие, у меня обычный ntfs  

    На ntfs можно сжимать файлы
     
    И кстати в смысле рациональности это очень удобно, ибо на сжимаемых файлах экономится не только память, но и скорость повышается - уже больше 20 лет эти пользуюсь)
     
    Добавлено:
    paparazzo

    Цитата:
    Простестировал на решении систем нелинейных уравнений.
    Код откомпилированный в VS2022 работает на 10% быстрее, чем VS2010, при одинаковых параметрах.
    Несколько раз прогнал, да 10% разница.
     
    Так что есть в этом доля правды.

    Ну вообще очевидно, что старый компилятор при оптимизации не учитывает особенности новых процов

    Всего записей: 2779 | Зарегистр. 20-04-2004 | Отправлено: 15:20 11-03-2025
    Rock

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    paparazzo

    Цитата:
    Это понятно, но не помогает.

    Этого не может быть. sprintf -- стандартная функция (из официального стандарта стандартной библиотеки С). Майкрософт, конечно, охренел, но пока не на столько.
    Когда возникают подобные проблемы -- это верный признак, что покосилось что-то у Вас.

    Цитата:
    Ошибка    LNK2019    ссылка на неразрешенный внешний символ sprintf в функции UserParamNames.

    Сходу -- Вы собираете без стандартной библиотеки (или подменили ее чем-то своим). Вы модифицировали систему сборки и оно теперь не работает. К сожалению, С -- это не только язык, но и некая среда и система сборки. Покосить что-то можно не только в исходном коде, и для уверенности нужно знать все три компонента.

    Всего записей: 1293 | Зарегистр. 10-04-2003 | Отправлено: 15:30 11-03-2025
    paparazzo



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Вы собираете без стандартной библиотеки

    Нагуглил, решается через подключение legacy_stdio_definitions.lib
    Всё просто оказалось.
     

    Цитата:
    Для обеспечения частичной совместимости ссылок с объектными файлами (и библиотеками), скомпилированными с более старыми версиями заголовков Microsoft C Runtime, мы предоставляем библиотеку , legacy_stdio_definitions.lib с Visual Studio 2015 и более поздними версиями. Эта библиотека предоставляет символы совместимости для большинства функций и экспортов данных, которые были удалены из Universal CRT. Набор символов совместимости, предоставляемый , legacy_stdio_definitions.lib достаточен для удовлетворения большинства зависимостей, включая все зависимости в библиотеках, включенных в Windows SDK.

    Всего записей: 3875 | Зарегистр. 06-04-2003 | Отправлено: 15:33 11-03-2025 | Исправлено: paparazzo, 15:37 11-03-2025
    Rock

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    paparazzo

    Цитата:
    решается через подключение legacy_stdio_definitions.lib

    Имейте в виду, что компоновка с legacy_stdio_definitions.lib нужна, если у Вас нет возможности пересобрать код с проблемными символами и вы подключаете его "как есть". Но Вы хотите, чтобы были задействованы новые возможности по оптимизации, т.е. пересобрать код Вам нужно. Тогда legacy_stdio_definitions.lib, по идее, не нужна.
    Впрочем, Вы в этом вопросе уже разбираетесь лучше меня. Возможно, эти символы у Вас лежат в third-party, которые ускорять и пересобирать не надо.

    Всего записей: 1293 | Зарегистр. 10-04-2003 | Отправлено: 15:55 11-03-2025
    TeXpert



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    paparazzo
    Цитата:
    Есть вопрос, пишу библиотеку на С в MS VS 2010
    В книге иэ этого поста подробно описано создание подобных библиотек, как через Microsoft C/C++, так и MinGW, без WinAPI-шных штучек DllMain. За основу взят пример из сайта Microsoft, но сильно "переработано и дополнено". Книга свободно воруется, есть на рутракере и Либгене
     
    V0lt
    Цитата:
    Мы тут обсуждали минимум для С/С++.
     
    Максимум у Студии никогда никому не понадобится. Вот нафига при выборе "рабочих нагрузок" выбирать "Разработка на Azure", если человек даже не знает, что это такое? Или все 100500 вариантов MFC из вкладки "Отдельные компоненты"?
    Вот, действительно нафига? Я же тут описывал способ --- из EWDK выбрасывается все лишнее, все устаревшее, в итоге останется около 5.4 GB в распакованном виде, причем оставшийся C/C++ компилятор не требует установки, может работать с флашки, и даже можно компилировать из-под Windows 7 SP1 (лишь обновить придется .NET Framework)
    Важно: "Вычистка" EWDK делается командой, и причем очень быстро
     
    zzz528
    Цитата:
    здесь или то или то, какие ещё нужны функции, имхо новые функции хлам, например http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=48937 2019 16гб это минималка собственно компилятор (сколько же студия тогда 50?) а старый 2017 6гб - за два выпуска типа 10гб новых функций, я и не хочу вникать, хлам сразу вон с компа
    Смотрите ближе к концу цитированного вами топика, там все описано. В итоге получите 5.4 GB. И это --- размер в распакованном виде, не ужатом! И это, кажется, не предел --- можете выкинуть еще и spectre, если не путаю

    ----------
    Майкудук, Пришахтинск не предлагать!:)
    А на Пирогова приходит снова весенний гомон...

    Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 14:19 14-03-2025 | Исправлено: TeXpert, 14:52 14-03-2025
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    paparazzo

    Цитата:
    Простестировал на решении систем нелинейных уравнений.
    Код откомпилированный в VS2022 работает на 10% быстрее, чем VS2010, при одинаковых параметрах.
    Несколько раз прогнал, да 10% разница.

    Помимо кучи оптимизаций, с некоторой версии Visual Studio по умолчанию использует инструкции SSE2.
    Если проект использует числа с плавающей запятой, то посоветую перепроверить результаты вычислений. Хотя тут в любом случае стоит перепроверить.
     
    TeXpert

    Цитата:
    Я же тут описывал способ --- из EWDK выбрасывается все лишнее, все устаревшее, в итоге останется около 5.4 GB в распакованном виде, причем оставшийся C/C++ компилятор не требует установки, может работать с флашки, и даже можно компилировать из-под Windows 7 SP1 (лишь обновить придется .NET Framework)

    Это все конечно интересно, но это никак полноценно не заменит Visual Studio.

    Всего записей: 11255 | Зарегистр. 05-02-2003 | Отправлено: 18:40 14-03-2025
    Igorr

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    paparazzo, как я понимаю, гоняет лучи разным ПО - тогда может перспективнее делать свои dlls с использованием какого-нибудь SYCL (C++ + OpenCL "в одном флаконе"), например, от Intel oneAPI, вмонтированным в VS.

    Всего записей: 2028 | Зарегистр. 01-05-2002 | Отправлено: 19:39 14-03-2025
    paparazzo



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    с некоторой версии Visual Studio по умолчанию использует инструкции SSE2

    А что с ними не так?
    Я начиная с VS2008 принудительно включал в компилятор опцию SSE2, т.к. код почти в 2 раза быстрее выполнялся на тогда ещё актуальных Core 2 Duo. Теперь VS стали по умолчанию их использовать, ничего нового думаю не получу.  
     

    Цитата:
    гоняет лучи разным ПО - тогда может перспективнее делать свои dlls с использованием какого-нибудь SYCL

    Типа того, но в данном случае всё очень просто, моя DLL принимает параметры лучей от 3rd party и возвращает ему же уже рассчитанные изменённые параметры лучей. Параметры возвращаемых функций определены.
    В примере выше один из параметров тип char*, но что-то использование sprintf_s выбивало 3rd party.
     
    Пока всё работает.
     
    Почему использую С код, а не С++, всё просто когда начинал изучать, попала в руки книжка "Numerical Recipes in C", оттуда примеры кода брал. Но думаю и написанная на C++ будет работать, но лень разбираться в нюансах отличия языков, да и не нужно.
    Всё равно это для меня часть большого проекта, кроме DLL ещё всякие макросы писать, инженерный софт сейчас сложный.

    Всего записей: 3875 | Зарегистр. 06-04-2003 | Отправлено: 10:22 15-03-2025 | Исправлено: paparazzo, 10:24 15-03-2025
    Igorr

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    моя DLL принимает параметры лучей от 3rd party и возвращает ему же уже рассчитанные изменённые параметры лучей

    Для таких задач и может помочь существенно ускорить расчёт подключение GPU посредством SYCL - без многострочного кода OpenCL с существенным облегчение программирования для GPU (SYCL содержит оболочку OpenCL типа как MFC является оболочкой WindowsAPI).

    Всего записей: 2028 | Зарегистр. 01-05-2002 | Отправлено: 10:48 15-03-2025
    KChernov



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    А что с ними не так?

    Точность может быть ниже. Но тут уже вопрос, а кому какой точности достаточно

    Всего записей: 2779 | Зарегистр. 20-04-2004 | Отправлено: 10:56 15-03-2025
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    paparazzo

    Цитата:
    А что с ними не так?

    В ними все так, но FPU и SSE2 могут давать разные погрешности при вычислении чисел с плавающей запятой. Это более актуально для 32-битного режима, т.к. на 64-битах SSE2 скорее всего использовался изначально.

    Всего записей: 11255 | Зарегистр. 05-02-2003 | Отправлено: 11:10 15-03-2025
    paparazzo



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    расчёт подключение GPU посредством SYCL

    Не поможет, т.к. по факту у меня это решение систем уравнений, чтобы передать нужные параметры основной программе. А распараллеливание производит сам основной софт, выполняя свой встроенный код, заданный в виде DLL и вызываемых из них функций. Я лишь задаю пользовательскую математику, которой нет в основном софте, для нестандартных сценариев использования, тоже с помощью пользовательских функций DLL.
    Это лишь часть большого алгоритма.
     
    Там есть свой API, и можно натянуть GPU, для каких-то промежуточных расчётов и возвращать результат через API, но у меня чуть более низкоуровневые расчёты, без использования API, напрямую возвращает результат расчёта, аналогично встроенному функционалу.  
    Т.е. по факту мне нужно будет на GPU переложить те же самые алгоритмы, которые выполняет CPU. Не быстрее явно будет, и можно ли так сделать не уверен - подменить CPU на GPU...
     
    А что касается трассировки лучей видеокартами, там используются "быстрые алгоритмы", где нанометровая точность и свойства материалов не нужны, игнорируется физика процесса, только какие-то базовые вещи для красивой картинки.

    Всего записей: 3875 | Зарегистр. 06-04-2003 | Отправлено: 11:32 15-03-2025
    TeXpert



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    V0lt
    Цитата:
    . . .но это никак полноценно не заменит Visual Studio
    Ну так наша цель --- не шашечки (Visual Studio), а поездка, то бишь полноценный компилятор. Тем паче, для научного программирования шашечки таки не главное

    ----------
    Майкудук, Пришахтинск не предлагать!:)
    А на Пирогова приходит снова весенний гомон...

    Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 13:47 17-03-2025
    paparazzo



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    В итоге получите 5.4 GB

    Я тупо скачал с рутрекера сборку VS2022, где только оставлен C++ и всё ненужное выкинуто.
    Всё равно заняло при установке порядка 8 Гб, а сам установщик 4.6 Гб. Полная VS что-то около 20 Гб, если не ошибаюсь.
     
    Для сравнения полная версия установщика VS2010 занимает 2,5 Гб вместе с C#, VB и прочими.

    Всего записей: 3875 | Зарегистр. 06-04-2003 | Отправлено: 11:25 20-03-2025
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    paparazzo
    Вообще-то TeXpert писал не о Visual Studio 2022, а о его любимом EWDK.

    Всего записей: 11255 | Зарегистр. 05-02-2003 | Отправлено: 11:52 20-03-2025
    V0lt



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть простой код.

    Код:
    #include <algorithm>
     
    class TestClass
    {
        int value = 0;
    public:
        void swap(TestClass& x) {
            std::swap(value, x.value);
        }
    };
     
    int main() {
        TestClass test1;
        TestClass test2;
     
        test1.swap(test2); // OK
        test1.swap(TestClass()); // C2664
    }

     
    Получаю ошибку от Visual Studio (C++14/17/20) с бредовым содержанием:
     

    Код:
    Error    C2664    'void TestClass::swap(TestClass &)': cannot convert argument 1 from 'TestClass' to 'TestClass &'    Source.cpp    17

     
    В чем причина ошибки? Как так получается, что класс не может быть преобразован в ссылку?

    Всего записей: 11255 | Зарегистр. 05-02-2003 | Отправлено: 20:08 19-04-2025 | Исправлено: V0lt, 20:18 19-04-2025
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2025

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru