ibliotecas @Link com dependências no Visual C ++ sem obter o LNK4006

Tenho um conjunto de bibliotecas compiladas estaticamente, com dependências bastante profundas entre as bibliotecas. Por exemplo, o X executável usa as bibliotecas A e B, A usa a biblioteca C e B usa as bibliotecas C e D:

X -> A
     A -> C
X -> B
     B -> C
     B -> D

Quando vinculo X a A e B, não quero obter erros se C e D também não foram adicionados à lista de bibliotecas - o fato de A e B usarem essas bibliotecas internamente é um detalhe de implementação que X não deve precisa saber sobre. Além disso, quando novas dependências são adicionadas em qualquer lugar da árvore de dependências, o arquivo do projeto de qualquer programa que use A ou B deve ser reconfigurado. Para uma árvore de dependência profunda, a lista de bibliotecas necessárias pode se tornar muito longa e difícil de mante

Então, estou usando a configuração "Dependências adicionais" da seção Bibliotecária no projeto A, adicionando C.lib. E na mesma seção do projeto de B, adiciono C.lib e D.lib. O efeito disso é que o bibliotecário agrupa C.lib em A.lib e C.lib e D.lib em B.li

Quando eu vinculo o X, no entanto, o A.lib e o B.lib contêm sua própria cópia do C.lib. Isso leva a toneladas de avisos ao longo das linhas de

A.lib (c.obj): aviso "símbolo" LNK4006 (_symbol) já definido em B.lib (c.obj); segunda definição ignorada.

Como posso fazer isso sem receber avisos? Existe uma maneira de simplesmente desativar o aviso ou existe uma maneira melhor?

EDITA: Vi mais de uma resposta sugerindo que, por falta de uma alternativa melhor, simplesmente desabilitei o aviso. Bem, isso faz parte do problema: eu nem sei como desabilitá-lo!

questionAnswers(9)

yourAnswerToTheQuestion