2013-08-29 166 views
0

我在它與2個項目的解決方案:找不到包含文件

  • ControlGUI
  • FunctionLIB

在FunctionLIB我使用兩種API外部硬件,稱爲SDK1.h和SDK2.h

該庫通過GUI鏈接,但GUI僅包括FunctionLIB.h

構建lib時,由於include目錄設置正確,因此可以找到頭文件。但是在編譯使用LIB函數的GUI時,我找不到包含文件。我還必須將include目錄添加到GUI目錄中。

這是爲什麼? LIB發現它很好,但GUI間接拋出一個錯誤,我不明白爲什麼它需要這些包括在首位。

回答

2

如果您創建了一個庫,則應該有一個(或多個)public頭文件,這些頭文件包含在需要使用庫的代碼中。但是,這些公共頭文件應儘量不要包含由您的庫內部使用的任何外部庫。

就你而言,它可能足以爲你的庫創建兩個頭文件。一個公共和一個包含公共頭文件和外部頭文件的私有。然後在你的圖書館你只包括私人頭文件。

+0

我從lib包含的文件包含三個頭文件,其中包括其他頭文件。所以包含的文件不直接包含外部頭文件。 – SinisterMJ

+0

@AntonRoth即使外部頭文件不直接包含,它們仍然包含在內。無論如何,將你的庫頭分成公共和私人頭文件是很好的。 –