2014-09-04 21 views
0

我可能誤解了編譯器是如何工作的,但我有以下情況。我有一個VC++ 2012項目。該項目包含一個包含數百個類的API。現在,我創建'main'入口點文件,我只是使用std東西。主要不包括從API的單個頭。當我編譯時,我發現API的所有東西都被編譯到可執行文件中,爲什麼會發生?是否應該在項目屬性中配置它?爲什麼Visual C++編譯器將未使用的類編譯爲可執行文件?

+0

如果這些文件是該項目的一部分,他們也編譯在 – 2014-09-04 09:04:50

+0

有沒有辦法阻止? – 2014-09-04 09:05:24

+0

要求編譯器優化,如果你想它優化 – 2014-09-04 09:07:15

回答

1

如果通過頭文件和主例程中的引用「未使用」,也編譯作爲項目一部分的源文件。

如果你不想要那些編譯,只是從項目中刪除它們。編譯器可能能夠優化所有的東西,但這並不意味着如果第一個項目的一部分沒有編譯它們。

+0

但我說過,主文件中沒有這些文件的引用/標題。 – 2014-09-04 09:06:10

+1

無所謂,它們是源文件項目的一部分,它們也被編譯。如果你不使用它們,你爲什麼要把這些項目放在首位?你是否試圖導出這些符號?正如Marco A.所說的: – 2014-09-04 09:06:40

+0

:如果你在「Project Explorer」中鏈接了一個'* .cpp'文件,它將被編譯。另一個解決方案可以是右鍵單擊/屬性檢查PE中特定文件的「排除」屬性 – lifeOfPI 2014-09-04 09:35:20

相關問題