Здравствуйте, Pavel Dvorkin, Вы писали:
СМ>>может я не понимаю что предлагается, но я вижу, что код функций из библиотеки содержится один раз во всем процессе. Это так?
PD>Нет, именно не так.
PD>Еще раз.
PD>Создаем свою static library, включающую в себя исходную library. Статически включающую, то есть код исходной static library просто находится в нашей static library. Статически влинкован. PD>Создаем еще одну свою static library, включающую в себя исходную library тем же образом
PD>Итого имеем 2 свои static library и ничего больше пока. В первой library все имена функций начинаются на my1, во второй — на my2, все остальное одинаково.
PD>Создаем EXE — проект.
PD>Подключаю в него my1lib. Имею полное право. И буду из нее вызывать my1* функции. Они будут вызывать исходные функции, которые внутри my1lib. PD>Подключаю в него my2lib. Имею полное право. И буду из нее вызывать my2* функции. Они будут вызывать исходные функции, которые внутри my2lib.
PD>Исходную library в проект EXE не включаем вообще, не нужно.
PD>То есть в my1lib сидит код исходной lib, а в my2lib сидит его копия.
Дело в том, что lib (не импортная, для DLL) это всего лишь контейнер для объектных файлов (грубо говоря). Соответственно Вы будете иметь в каждой библиотеки копию объектников исходной библиотеки. При построении EXE будет выбор исходжнй объектников из первой подключенной библиотеки. Т.е. у Вас будет одна копия и всё что полагается для одной копии.