NT> Можно собрать ToDo-заглушки для библиотек B или условно omit-ить вызовы.
Заглушки не подходят — некрасиво:) OMIT-ить вызовы не получится, так-как библиотека уже собрана и откомпилирована а условия конечной сборки определяются в самом приложении.
Вообщем, я уже решил эту проблему — в самом INC-файле основной библиотеки, используя COMPILE(), объявляю адресные метки всех «плавающих» переменных/процедур из подчиненных библиотек. А в главной библиотеке есть только список их адресов. При сборке библиотеки он пустой. Теперь, при сборке приложения, надо только с помощью Define-меток указать, какие переменные/процедуры будут использоваться в данном приложении и с помощью процедуры регистрации из главной библиотеки заполнить список адресов. Все это делает шаблон. Таким образом, получили эмуляцию динамического определения нужных адресов в статическом режиме! И линкер не ругается, и все работает.
В принципе, все это необходимо для новой библиотеки DynaFile. В этой библиотеке мне необходимо знать точки входа в файловые драйверы. В DLL-режиме их определить элементарно. А в статике их можно определить только если нужные LIB-библиотеки уже подключены к проекту. А так как эти точки входа определяются по символьным меткам драйверов, то эти самые символьные метки надо объявить в библиотеке. А если метка объявлена, но драйвер не подключен, то получаем отлуп от линкера. Вот и получается, что все драйверы подключать к проекту — нонсенс, а знать их адреса в библиотеке надо! И никакие условия компиляции уже не помогут, так как библиотека уже собрана.
>> А вот в данном случае — в библиотеке (А) обьявлено несколько
>> переменных или процедур, которые находятся в нескольких разных
>> библиотеках. При определенных условиях, в приложении некоторые
>> из этих переменных или процедур будут не нужны. Не хотелось-бы и
>> «цеплять» лишние библиотеки, которые не будут использованы.
>> Можно, конечно, для разных таких случаев собрать разные
>> варианты библиотеки (А). Но таких вариантом может быть масса.
>> Да и не красиво это как-то!