Вы читали другие ответы? Несколько человек объяснили, как отключить предупреждение, около 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); второе определение игнорируется.

Как я могу сделать это без предупреждения? Есть ли способ просто отключить предупреждение, или есть лучший способ?

РЕДАКТИРОВАТЬЯ видел более одного ответа, предполагающего, что из-за отсутствия лучшей альтернативы я просто отключаю предупреждение. Ну, это часть проблемы: я даже не знаю, как это отключить!

Ответы на вопрос(9)

Ваш ответ на вопрос