Como o vinculador C ++ sabe qual .lib contém quais funções?
Por exemplo, no Boost. Eu estabeleci umincluir diretório no MSVC ++ 2010 para o diretório raiz Boost e tenha um#include <boost/regex.hpp>
no meu código fonte. Eu estabeleci umbiblioteca diretório paraboost\stage\lib
mas existem centenas de arquivos - vários para cada biblioteca Boost e estes para o boost :: regex:
libboost_regex-vc100-s-1_46.lib libboost_regex-vc100-mt-gd-1_46.lib libboost_regex-vc100-mt-1_46.lib libboost_regex-vc100-mt-s-1_46.lib libboost_regex-vc100-mt-s.lib libboost_regex-vc100-s.lib libboost_regex-vc100-mt.lib libboost_regex-vc100-mt-gd.lib
Como o MSVC sabe qual dos arquivos lib é o correto? Se varrer todas elas em busca de assinaturas corretas de funções, isso significa que duas bibliotecas diferentes compiladas de duas fontes diferentes (não ligadas umas às outras) que definem funções com nomes e parâmetros idênticos não podem estar em uma pasta lib?
E como ele sabe o que é certo entre todos esses diferentes regex .lib's? E então, cada arquivo com1_46
em seu nome de arquivo parece idêntico ao respectivo arquivo sem, posso excluir com segurança um dos dois?