информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медПортрет посетителяЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft прикрывает Visual Studio... 
 Умер Кевин Митник 
 Массовое внедрение вредоносного... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
S toboi vse Iasno. 04.12.01 23:09  Число просмотров: 1094
Автор: Biasha <Бяша> Статус: Member
<"чистая" ссылка>
> dl, ты говоришь что это оптимально. ок, а тогда как ты
> объяснишь тот факт, что когда я ставлю DYNAMIC linkin,
> прога занимает 6 кило и импортит из cw3230 десяток ф-ций и
> из кернела с юзером дешку... но как только я ствалю STATIC
> то Кернел и Юзер чуть ли не целиком запихиваюца мне в
> файло????

Точно так же, как и для vc++:

1. Когда ты выбираешь DYNAMIC (vc++ аналог - multithreaded DLL), то все стандартные сишные функции записываются в раздел импортов твоего ехешника, и, ясное дело, при этом происходит статическое связывание твоего ехе с cw3230.dll. В результате твой ехешник офигенно маленький, но тебе обязательно нужно носить с собою cw3230.dll. MS здесь выигрывает - он, в отличии от борланда, таскает аналогичную длл сам.

Таким образом, импортируются те функции cw3230, которые используешь ты (возможно, некоторые неявно) + все остальные системные, которые ты используешь.
Ну и ясное дело без cw3230 твоя программа даже не запуститься. И ничего здесь не поделаешь.

2. Когда ты выбираешь STATIC (vc++ аналог - multithreaded), то всякие там длл посылаются нафиг, вместо того в твой ехешник записывается код, реализующий эти же функции из cw3230.

В результате: носить с собой длл тебе не нужно, ехе файл становиться больше, и в него импортируются системные функции, которые используешь ты + системные функции, которые использует тот стандартный код, который тебе записали.

> Не потому ли что вся cw3230 вшиваеца мне в файл и из-за
> этого все дерьмо которое юзает cw3230 тоже туда же
> попадает!!! что это за шлак?
Теперь про шлак: это не шлак, вернее, поскольку я не знаком с bc++, это не обязательно шлак. Даже если ты не вызываешь явно ни одну из функций cw3230 это ещё не означает, что из твоего ехе файла не вызываются функции из cw3230: например, какую-то функцию может вызывать стандартный код, который выполняется до вызова твоего main.


Ну и вывод:
Если на копе заказчика есть cw3230, то выбирай DYNAMIC и ехешник будет меньше занимать.
Иначе, размер того, что нужно носить с собой, уменьшить невозможно, хотя можно разнести твой и стандартный код в разные файлы - выбрав DYNAMIC, но нафиг надо.

Теперь реклама:
Если бы ты юзал vc++, то всегда бы мог выбрать DYNAMIC, поскольку стандартные длл МС за тебя носит.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2023 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach