Здравствуйте, Сергей Мухин, Вы писали:
СМ>Еще раз. lib — это контейнер — набор .obj файлов. Можно руками взять из одной библ и добавить в другую библ, но когда она будет отображаться на .exe/.dll то будет выбрана одна копия .obj (все это приблизительно)
Это я понимаю, конечно, но почему-то полагал, что при сборке lib код, от которого она зависит, в нее "переползает". Видимо, повлиялаа на меня аналогия со сборкой EXE — там именно переползает.
Да, ты прав. Сейчас проверил. Для того, чтобы либу собрать, иметь либу, из которой ее функции вызываются, не требуется.
void g();
void f()
{
g();
}
и либа готова, хотя кода g вовсе и нет, и откуда он берется — пока что неизвестно.
СМ>В вот exe/dll это не набор obj файлов.
Конечно.
СМ>при этом Lib строит утилита lib.exe, а exe/dll — link.exe (имена вымышленные, любые совпадения с реальными...
)
СМ>И как после этого можно удивляться что они работают по разному?
Вот это не аргумент ИМХО. Почему бы двум программам в чем-то не работать одинаково ?
СМ>не часто встретишь на форумах такие признания
Жаль. И все-таки : никаких принципиальных соображений, почему нельзя бы поместить в АП 2 копии одного и того же кода, я не вижу. То, что так не получилось — вопрос реализации, а не принципа.