VC++ C2011 重定义错误 - 未使用的头文件
VC++ C2011 redefinition errors - unused header files
我正在使用一个大型控制台应用程序。该解决方案包含 5 个项目。 我正在添加第 6 个项目来替换现有项目之一以允许使用 GUI。
我收到许多关于类型重定义的编译器 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
中?
谢谢。
这个问题似乎主要基于原始大型项目的可怕文件结构。 尝试在解决方案中创建新项目以将另一个项目复制为 GUI 而不是控制台项目意味着项目的编译在许多文件上加倍。
我找到了另一篇文章(现在找不到(,其中指出,当Visual Studio解决方案编译时,所有项目文件都会合并,就像.c/.cpp/.h
文件中的所有#include
语句一样,实际上只是将所有这些文件复制到#included
它们的文件中。
我的解决方案是创建大型项目的副本(用于备份(,并在复制的项目中删除原始控制台项目并仅包含 UI 项目。文件不再加倍,因为它们不再存在于两个项目中,只是解决方案中仍然存在的文件。
- 链接器输入文件未使用,因为链接未完成,我无法获得.o
- 在发送源代码时省略未使用的boost src文件的策略
- VC++ C2011 重定义错误 - 未使用的头文件
- 尽管使用-i标志,但仍未使用此类文件或目录
- C++删除未使用的库的生成文件问题
- 如果与未使用的库链接,可执行文件的构建方式是否不同?
- 文件大小调整未使用std::filebuf反映
- 未使用运算符从文件中正确读取数据>>
- 编译器是否会优化未使用的链接文件
- 为什么 g++ 预处理器包含未使用的头文件
- 使用文件的未定义引用
- 为什么Visual C++编译器将未使用的类编译为可执行文件
- Makefile错误-链接器输入文件未使用
- 在C/ c++中包含未使用的头文件会影响性能吗?
- 链接器输入文件未使用,因为链接尚未完成
- 如何从最终二进制文件中排除未使用的方法
- g++.exe[警告]链接器输入文件未使用,因为链接未完成
- 头文件中出现错误C2719-未使用stl:vector
- 在 H 文件中声明的 C++ 静态数组给出警告"已定义但未使用"
- 检查main()中未使用的头文件