Статические библиотеки не связаны. Это просто набор объектных файлов (* .obj или * .o), которые заархивированы вместе в файл библиотеки (вроде файла tar / zip), чтобы компоновщику было легче находить необходимые ему символы.
Статическая библиотека может вызывать функции, которые не определены (но объявлены только в заголовочном файле), так как она только компилируется. Затем, когда вы связываете exe или dll, которая использует статическую библиотеку, вам нужно будет связать ее с другой библиотекой, которая предоставляет вызываемую из статической библиотеки, но не определенную в ней.
Если вы хотите, чтобы компоновщик автоматически связывал другие библиотеки, предложение Стивена сработает и будет использоваться очень уважаемыми библиотеками, такими как boost и stlport. Для этого поместите прагму в основной заголовочный файл для статической библиотеки. Вы должны включить статическую библиотеку и ее зависимые элементы.
Однако IMO эта функция действительно предназначена для авторов библиотек, где библиотека находится в пути к системной библиотеке, поэтому компоновщик ее легко найдет. Также в случае boost и stlport они используют эту функцию для поддержки нескольких версий одних и тех же библиотек с параметрами, определенными с помощью #define
s, где для различных параметров требуется связать разные версии библиотеки. Это означает, что пользователи с меньшей вероятностью будут настраивать надстройку в одном направлении и связываться с библиотекой, настроенной другим способом.
Я предпочитаю код приложения явно связывать необходимые части.