Link bibliotecas con dependencias en Visual C ++ sin obtener LNK4006

Tengo un conjunto de bibliotecas compiladas estáticamente, con dependencias bastante profundas entre las bibliotecas. Por ejemplo, el ejecutable X usa las bibliotecas A y B, A usa la biblioteca C y B usa las bibliotecas C y D:

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

Cuando conecto X con A y B, no quiero obtener errores si C y D no se agregaron también a la lista de bibliotecas; el hecho de que A y B utilicen estas bibliotecas internamente es un detalle de implementación que X no debería Necesito saber sobre Además, cuando se agregan nuevas dependencias en cualquier parte del árbol de dependencias, el archivo del proyecto de cualquier programa que use A o B debería reconfigurarse. Para un árbol de dependencia profunda, la lista de bibliotecas necesarias puede ser realmente larga y difícil de mantener.

Así que estoy usando la configuración "Dependencias adicionales" de la sección Bibliotecario en el proyecto A, agregando C.lib. Y en la misma sección del proyecto de B, agrego C.lib y D.lib. El efecto de esto es que el bibliotecario agrupa C.lib en A.lib, y C.lib y D.lib en B.lib.

Cuando enlace X, sin embargo, tanto A.lib como B.lib contienen su propia copia de C.lib. Esto lleva a toneladas de advertencias en la línea de

A.lib (c.obj): advertencia LNK4006 "símbolo" (_symbol) ya definido en B.lib (c.obj); segunda definición ignorada.

¿Cómo puedo lograr esto sin recibir advertencias? ¿Hay alguna manera de simplemente deshabilitar la advertencia, o hay una mejor manera?

EDITA: He visto más de una respuesta que sugiere que, a falta de una mejor alternativa, simplemente desactivo la advertencia. Bueno, esto es parte del problema: ¡ni siquiera sé cómo deshabilitarlo!

Respuestas a la pregunta(9)

Su respuesta a la pregunta