为什么Visual C++编译器将未使用的类编译为可执行文件?
我可能误解了编译器是如何工作的,但我有以下情况。我有一个VC++ 2012项目。该项目包含一个包含数百个类的API。现在,我创建'main'入口点文件,我只是使用std东西。主要不包括从API的单个头。当我编译时,我发现API的所有东西都被编译到可执行文件中,为什么会发生?是否应该在项目属性中配置它?为什么Visual C++编译器将未使用的类编译为可执行文件?
如果通过头文件和主例程中的引用“未使用”,也编译作为项目一部分的源文件。
如果你不想要那些编译,只是从项目中删除它们。编译器可能能够优化所有的东西,但这并不意味着如果第一个项目的一部分没有编译它们。
但我说过,主文件中没有这些文件的引用/标题。 – 2014-09-04 09:06:10
无所谓,它们是源文件项目的一部分,它们也被编译。如果你不使用它们,你为什么要把这些项目放在首位?你是否试图导出这些符号?正如Marco A.所说的: – 2014-09-04 09:06:40
:如果你在“Project Explorer”中链接了一个'* .cpp'文件,它将被编译。另一个解决方案可以是右键单击/属性检查PE中特定文件的“排除”属性 – lifeOfPI 2014-09-04 09:35:20
如果这些文件是该项目的一部分,他们也编译在 – 2014-09-04 09:04:50
有没有办法阻止? – 2014-09-04 09:05:24
要求编译器优化,如果你想它优化 – 2014-09-04 09:07:15