Ошибки переопределения VC ++ C2011 - неиспользуемые заголовочные файлы - PullRequest
0 голосов
/ 23 мая 2018

Я работаю с большим консольным приложением.Решение содержит 5 проектов.Я добавляю 6-й проект для замены одного из существующих проектов, чтобы разрешить использование графического интерфейса.

Я получаю много ошибок компилятора C2011 относительно переопределения типа.В частности, они 'struct' type redefinitions или '[function]: redefinition; different linkage.Они приходят из заголовочных файлов ws2def.h и winsock2.h.

Я искал весь проект и все решение, где они включены, но я не вижу никаких #include <ws2def.h> или #include <winsock2.h> операторов, и ничего, что бы указывало на то, что они используются.

Однако в проект, который я заменяю, и в мой новый проект включены External Dependencies папки / фильтры.И ws2def.h, и WinSock2.h существуют в этих фильтрах.Я не думаю, что наличие одного и того же файла, включенного в отдельные проекты в рамках одного решения, может вызвать эти проблемы.Кроме того, я получаю эти ошибки при сборке только моего нового проекта, то есть он все равно не должен видеть старый проект.

Основываясь на предоставленной мной информации, вы можете увидеть, где может возникнуть моя проблема?ложь?Это тот случай, когда эти заголовочные файлы должны быть #included где-то внутри проекта, а я просто не вижу этого?Я рассмотрел удаление обоих заголовочных файлов из фильтра External Dependencies, потому что, похоже, они мне не нужны.Есть ли другой, общий файл заголовка, который также включает эти файлы заголовка, чтобы они не отображались в CTRL-Find?

Спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Проблема, как представляется, в основном основана на ужасной файловой структуре исходного большого проекта.Попытка создать новый проект в решении для репликации другого проекта в виде графического интерфейса вместо консольного проекта означала, что компиляция проекта удваивалась во многих файлах.

Я нашел другой пост (не могу его найтипрямо сейчас), который заявил, что при компиляции решения Visual Studio все файлы проекта объединяются, как и все операторы #include в файле .c/.cpp/.h, на самом деле просто копируйте все эти файлы в файл, который #included их.

Мое решение состояло в том, чтобы создать копию большого проекта (для целей резервного копирования), а в скопированном проекте удалить исходный проект консоли и включить только проект пользовательского интерфейса.Файлы больше не удваиваются, потому что они больше не существуют в обоих проектах, только тот, который все еще существует в решении.

...