Например, в Boost. Я установил каталог include в MSVС++ 2010 в корневой каталог Boost и #include <boost/regex.hpp>
в моем исходном коде. Я установил каталог библиотеки boost\stage\lib
, но там сотни файлов - несколько для каждой библиотеки Boost, а для 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
Как MSVC знает, какой из всех файлов lib является правильным? Если он сканирует все из них на правильные сигнатуры функций, означает ли это, что 2 разных lib, скомпилированных из двух разных источников (не связанных друг с другом), которые могут определять функции с одинаковыми именами и параметрами, не могут находиться в одной папке lib?
И как он узнает, что является правильным среди всех этих разных регулярных выражений .lib? И тогда каждый файл с 1_46
в своем имени файла, похоже, идентичен соответствующему файлу без него, могу ли я безопасно удалить один из двух?