Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: CRT Library  (Прочитано 6865 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 01-07-2004 02:11 » 

Я выкинул из проекта все CRT библиотеки, теперь надо предоставить линкеру ссылки на
_strlen
__assert
__chkesp
нет ли где в винде их аналога?

Или это не самый удачный способ уменьшить исполняемый файл?
Записан

1n c0de we trust
Xeysan
Гость
« Ответ #1 : 01-07-2004 07:13 » 

assert ты можешь написать сам, со студией поставляются исходники библиотеки, посмотри в файле assert.c.
strlen == lstrlen
Насчет chkesp, попробуй откомпилировать не Debug, a Release версию проекта, по идее должен выкинуть, хотя я не уверен   Вот такой я вот
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 03-07-2004 21:36 » 

Mayor, можно компилироваться с MSVCRT.DLL тогда размер статической части экзешника будет относительно мал.  

Ещё один способ поставить в Visual Studio исходники С Run Time, выкинуть всё, что считаешь лишним, и линковаться с результатом.

По ссылке http://msdn.microsoft.com/msdnmag/issues/01/01/hood/default.aspx лежит статья одного товарища, который озаботился разработкой маленькой библиотечки c run time. Посмотри, может тебе подойдёт.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Mayor
Специалист

ru
Offline Offline

« Ответ #3 : 12-07-2004 03:01 » 

npak,  я начал читать статью, но не понял что такое статический конструктор, деструктор и куда в этом случае девается this
Записан

1n c0de we trust
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 12-07-2004 03:57 » 

Если ты используешь классы с их конструкторами, деструкторами, операторами new и delete то без crt обойтись будет нелегко.

Вот интересная статья
http://rsdn.ru/?article/cpp/crt.xml
Записан
Mayor
Специалист

ru
Offline Offline

« Ответ #5 : 15-07-2004 02:48 » 

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

npak, насколько я понял статический конструктор вызывается при объявлении объекта вне функции? this ссылается на .data секцию ?
Записан

1n c0de we trust
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 15-07-2004 12:25 » 

Mayor, да, статический конструктор вызывается для объектов в глобальной области видимости, вне функций и других классов.  Например, cin, cout.  Статические поля классов, я думаю, инициализируются при первом обращении к ним.

Что касается размещения глобального объекта, то я думаю что для него vtables и структура данных для объекта аллоцируются статически и помещаются в сегмент данных.  Возможно, это .data.

Деструкторы должны вызываться после завершения main, с ними тоже есть свои заморочки, но проще чем с конструкторами.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines