Нужны ли статическим библиотекам, которые зависят от других слибов, фактический «код» от них для работы? - PullRequest
10 голосов
/ 01 июня 2011

Извините за смутное название вопроса, я просто хочу выяснить некоторые вещи.

Статические библиотеки не связаны с другими статическими библиотеками, верно?

Итак, когда я пишу слиб: A, который использует функциональность другого: B, все, что я должен предоставить, это заголовки от B до A и только те, даже если A действительно использует функциональность от B? Да?

До тех пор, пока exe: X, который использует A, указал B.lib в качестве входных данных компоновщика?

Так что во время компоновки компоновщик берет A.lib, который в основном знает только, что функция B была вызвана где-то внутри его кода, и каким-то образом заполняет эту информацию из B.lib, делая A.lib «целым», прежде чем X будет связан с уже работающими его частями?

Мотивация этих вопросов состоит в том, чтобы избавиться от некоторых предупреждений 4006 компоновщика и отброшенных двойных определений, и я думаю, что это должно сработать, если это действительно правильный способ сделать это.

Ответы [ 2 ]

8 голосов
/ 01 июня 2011

Да, вы правильно поняли.Исполняемые файлы (и библиотеки DLL), которые зависят от статических библиотек, не могут быть созданы без разрешения этих зависимостей, но статические библиотеки, содержащие зависимости от других статических библиотек, не требуют разрешения этих зависимостей во время создания статической библиотеки .На самом деле, процесс создания статической библиотеки вообще не требует компоновщика.

2 голосов
/ 02 июня 2011

Не могу добавить ответ Neils, кроме как сказать, что статическая библиотека - это просто целая куча файлов объектов (.o), собранных в один индексированный файл.Поэтому то, что работает для файла .o, будет работать для статической библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...