|
|
| Посл.отвђт | Сообщен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 кб оверхеда. Ну и х с ним! Не там оптимизировать надо. В алгоритмах и циклах вся оптимизация. На остальное мне по х... |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.041 |