· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› CRT в C++

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Май 17, 2004 19:52:21

Я тут решил посмотреть С++ более детально и таки узнать, почему, какая злая сила или смертельная нужда заставляет людей на этом писать программы. После нескольких часов разглядывания всего этого добра и лазанья по менюшкам (M$ VS2K3) скомпиленный на релизе проект стал занимать 1.5кб. Собственно, этого я и добивался. Заглянули с Олей в код. Довольно неплохо для тупой железки, но можно лучше. Ну короче С++ перестало мне казаться магическим артефактом зла, который притягивает людей затмевая им разум.
Но сегодня я был сильно удивлен, когда функция перевода строки в float отказалась линковаться, т.к. для работы с плавающей точкой нет способов. В растрепаных чувствах создаю стандартный проект, стараюсь не думать о том, какой мутант сейчас свалится на винт. Операции с флоатом работают. Отключаю CRT - не работает. Вывод: работа с флоатом зашита в CRT, а их подключение влечет за собой невероятное раздутие проги и усиление ее тормознутости, т.е. для меня подключать ЭТО крайне не желательно.

Собственно, вопрос: я один настолько талантлив, что у меня без CRT ничерта не работает, или же это действительно так?

ЗЫ: флейм по поводу, что си лучше и прочая прошу не раздувать.


Дата: Май 17, 2004 19:58:29

Точно не помню, но кажется после добавления чего-то типа int _fltused; заработало.
Очень вероятно, что я ошибаюсь.


Дата: Май 17, 2004 20:01:01 · Поправил: volodya

Если без флейма и особых комментариев по поводу всего, что написано выше.
Варианта два:
1) Вырипать код из исходников CRT и вставить его в свой проект.
2) Взять не lib, который содержит все исходники crt, а лишь obj, содержащий только то, что нужно тебе.


Дата: Май 17, 2004 20:07:22

volodya
Мыло мое n0p@bk.ru

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


Дата: Май 17, 2004 20:42:29

вместо crt можно использовать msvcrt ;-)


Дата: Май 17, 2004 20:43:16

Это одно и то же. :)
Ты, вероятно, имеешь в виду dll, а не lib.


Дата: Май 17, 2004 20:52:10


Дата: Май 17, 2004 21:35:55

Asterix
За ссылку спасибо - указала направление, буду думать. Скорее всего все закончится написанием своих функций для удобства. А еще лучше макросов.


Дата: Май 17, 2004 21:48:34 · Поправил: volodya

Ну да!

Да ну!
Еще раз говорю - одно и то же.


Дата: Май 17, 2004 22:31:59

volodya
Одно и тоже, только msvcrt.lib не статическая либа и соответственно не содержит кода, и он не будет прилинкован к проге, и прога будет тогда меньше, а если прога будет меньше тогда цель достигнута :-)


Дата: Май 17, 2004 22:39:02

n0p
у меня такая же ситуЁвина была. вопрос решал с помощью написания мини-CRT. Есть одна интересная статья в MSDN, если ты не читал, то поищи "Reduce EXE and DLL Size with LIBCTINY.LIB"


Дата: Май 17, 2004 22:54:31

volodya
Из статьи по ссылке которую я дал выше:
Использование внешней библиотеки CRT

Откомпилируем нашу программу следующей командой:

cl /MD test.cpp user32.lib


Размер полученного в результате EXE-файла составляет около 16 килобайт. Что за чудеса?
Куда делась половина исполняемого модуля? Неужели он "похудел" за счет исключения CRT?

И да, и нет. Опция компилятора /MD указывает использовать для сборки библиотеку MSVCRT.LIB.
В ней содержится только тот набор кода, который позволяет линкеру разрешить внешние связи.
А сам код CRT находится в динамической библиотеке MSVCRT.DLL в системном каталоге Windows.


Дата: Май 17, 2004 23:26:43

Ой :)
Перепутал с libc.lib. Живи, курилка.
Противный :)


Дата: Май 18, 2004 00:26:36

1) msvcrt60.dll не поставляется с NT4 и 2К - делаем выводы.
2) я чтоб не нести с собой весь STL и т.д. - вытаскиваю нужный мне код и компилю его, а рантайм отключаю.
топикстартеру : С++ привлекает не размер (да и то - он намного меньше чем дельфи и т.д.) , привлекает сам язык - красивый и удобный trade-off между языком высокого уровня и низкого уровня.


Дата: Май 18, 2004 00:29:55 · Поправил: volodya

>msvcrt60.dll не поставляется с NT4 и 2К - делаем выводы.

Дык и это уже обсуждалось. И dll-hell, и все остальные радости. Как по мне, так мне, лично, вообще плевать на 30-40-100 кб оверхеда. Ну и х с ним! Не там оптимизировать надо. В алгоритмах и циклах вся оптимизация. На остальное мне по х...

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.041