> 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, поскольку стандартные длл МС за тебя носит.
|