Вы читали другие ответы? Несколько человек объяснили, как отключить предупреждение, около 18 месяцев назад
я есть набор статически скомпилированных библиотек с довольно глубокими зависимостями между библиотеками. Например, исполняемый файл X использует библиотеки A и B, A использует библиотеку C, а B использует библиотеки C и D:
X -> A
A -> C
X -> B
B -> C
B -> D
Когда я связываю X с A и B, я не хочу получать ошибки, если C и D также не были добавлены в список библиотек - тот факт, что A и B используют эти библиотеки внутри, является деталью реализации, в которой X не должен нуждаться знать о. Кроме того, когда новые зависимости добавляются в любом месте дерева зависимостей, файл проекта любой программы, использующей A или B, должен быть перенастроен. Для дерева глубоких зависимостей список необходимых библиотек может стать очень длинным и сложным в обслуживании.
Итак, я использую настройку «Дополнительные зависимости» раздела «Библиотекарь» в проекте «А», добавляя C.lib. И в том же разделе проекта B я добавляю C.lib и D.lib. В результате библиотекарь связывает C.lib с A.lib, а C.lib и D.lib с B.lib.
Однако, когда я связываю X, и A.lib, и B.lib содержат свою собственную копию C.lib. Это приводит к тоннам предупреждений по линии
A.lib (c.obj): предупреждение LNK4006 «символ» (_symbol) уже определен в B.lib (c.obj); второе определение игнорируется.
Как я могу сделать это без предупреждения? Есть ли способ просто отключить предупреждение, или есть лучший способ?
РЕДАКТИРОВАТЬЯ видел более одного ответа, предполагающего, что из-за отсутствия лучшей альтернативы я просто отключаю предупреждение. Ну, это часть проблемы: я даже не знаю, как это отключить!