Хотел создать максимально компактный проект. Легкий, быстрый, и что самое главное - не требующий библиотек, не идущих с осью. Из всего, что я нагуглил, узнал, что это раз плюнуть, но только в теории, что у майков есть msvcrt, но в общий доступ они ее давать не хотят, что она устарела, но они ее обновляют, что есть на гитхабах msvcrt.lib, но как линковать ее - неясно, и что под мои цели ее точно хватит, в общем, что я только ни пробовал, либо не работало, либо увеличивало размер файла.
Статическая мне не нужна, иначе бы я не задавался целью писать на WinAPI.
Все это, вероятно, от нехватки опыта, потому прошу помочь разобраться, как же воплотить мазохистскую мечту в жизнь. Не вылезая из комфортной 2022 VS.
Не майся дурью. Я серьёзно. 20 лет назад я изучал ассемблер, чтобы даже с WinAPI в ассемблере работать, дляминимизации размера и максимизации скорости. Ведь на ассемблере будет быстрее менюшечка работать, чем на С++, "это же очевидно"(с).
Идёт 2022 год, не стесняясь использую Qt, который тащит за dll на несколько десятков мегабайт, даже для маленьких утилит, которые на "голом" С++ можно уложить в несколько сот килобайт, даже при татической линковке с CRT. Тут дело в чём, скорость и удобство разработки гораздо важнее экономии десятка мегабайт на диске. Скорость и удобство разработки важнее потери 0,01% производительности. Лишняя иконка на рабочем столе займёт больше дисковог опространства, чем микроскопическая утилита, не надо экономить на крошках. Собственно, иконка твоего приложения может занимать больше места, чем супер эффективный код на голом WinAPI.
Смысл извращаться может быть только для embeded систем, где могут быть существенные ограничения всех ресурсов. На ПК, да ещё и под Виндоус, самое главное это упростить и удешевить разработку. Сэкономленное время можно потратить на котиков в ютубе или ту же иконку приложения боее красиво перерисовать.
Не майся дурью, даже из спортивного мазохистского развлечения.
maaGames, все зависит от приоритетов. Вместо того, чтобы ответить на вопрос (а с 95% шансом ответа ты тоже не знаешь, потому что сам не задавался) ты выражаешь свое несогласие, исходя из собственных предпочтений. А теперь представь, сколько мусора придется пропустить через свой мозг человеку, которому нужно то же самое, только под специфические, возможно жизненно важные задачи. Пока он найдет то, что ему нужно. И еще, WinAPI никогда не устареет, тут нет даже повода спорить.
Но естественно - ты можешь дальше отклониться от темы, и сказать, в чем я не до конца прав. Так происходит в 99% случаях, так что я просто добавлю, что моя позиция нейтральна, мнение никому не навязываю.
P.S. Серьезно. Кто-то готов неделю рисовать иконку к двухдневному проекту, кто-то маниакально гонится за сжатием, не обязательно же писать простыню, отвечая каждому второму "зачем это тебе". Я просто хотел написать приложение, которое работает на ресурсах Windows, без внешних библиотек, с минимумом мусора типа статической линковки.
PresetX, Потому и комментарий, что это не был ответ.
Самая маленькая программа, которую мне удавалось написать на С++ + WinAPI получилась 5 килобайт и она скомпонована с msvcrt.lib. Она в коде возврата возвращает число страниц в pdf файле. Но это было в старых версиях MSVC, если не ошибаюсь, сейчас даже при статической компоновке требуется одна dll'ка, может об этом и страдания на форумах.
https://rsdn.org/article/cpp/crt.xml#EDD
Почитайте.
Плюс еще одно соображение .NET 2 идет в стандартной поставке даже с XP и запускаться будет везде, подумайте над этим вариантом
Точку входа можно установить вручную, мимо CRT. Среду обработки ошибок можно отключить.
Использование NET уничтожит весь шарм задачи) Хотя ладно, упираться и терять время желания тоже нет. Не нашел - значит, не нашел.
Владимир Коротенко, спасибо, очень интересная статья. Столько ограничений, конечно, накладывается за сокращение размера файла:) Наверное, мне следует углубиться в теорию, дабы предотвратить бессмысленное копирование.
Не было возможности ни ответить, ни прочитать до этого времени.
И все же статья подтверждает, что отказываться от CRT не лучшее решение. Но вот вопрос - как тогда компилится код драйверов? Если не ошибаюсь, преобразования в стиле C++ и проч. поддерживается.
Если есть статья с похожим стилем изложения на эту тему, тоже бы прочитал.