2016-01-31 79 views
0

當我發佈this question關於嘗試構建DLL而沒有獲取DLL時,評論者提到我可能不會導出項目中的任何符號。當我檢查時,我發現CMake構建的項目文件沒有包含項目的.h文件,所以我添加了它。它包含所需的出口申報。不幸的是,重建仍然不會生成一個DLL,並且在玩了一段時間之後,我發現編譯器根本沒有注意到.h文件。當我在那裏寫明顯語法無效的東西時,它甚至不會破壞構建。爲什麼Visual Studio忽略我項目中的.h文件?

爲什麼編譯器在將它添加到項目後忽略.h文件,以及如何才能使它正確編譯?

+1

.h文件是否包含在與項目一起編譯的任何.c文件中? – dxiv

回答

2

編譯器只會翻譯一個.h文件,如果它在包含的包含在它正在構建的翻譯單元(.c文件)中。爲它添加引用makefile本身並不會導致.h文件被轉換。如果它是目標 - 沒有規則來建立.h文件,因爲它沒有意義。如果它是依賴關係,對其的更改將導致目標被構建,但是如果目標不包含頭文件,則它不是真正的依賴關係。

另一種可能性是包含標題,但包含一些未啓用的條件編譯。

+1

呃,對。我應該記住#include全部是內聯的。抱歉;我太習慣於使用真實模塊系統的語言。 –

相關問題