2013-11-28 128 views
0

在C++中,是否需要將任何需要的頭文件複製到主C++文件的目錄中?在C++中包含頭文件

Ex。我在全球安裝了OpenCV,並且Python綁定運行良好。但是,如果我寫:

#include "opencv2/highgui/highgui.hpp" 

我收到「未找到」錯誤。我是否需要將這些從全局安裝位置複製到項目目錄中?我確定這一定要有一套行之有效的做法,所以我不想在黑暗中獨自徘徊。

+6

通常你告訴編譯器到哪裏尋找包含文件。這取決於編譯器和/或IDE。 – juanchopanza

+0

@juanchopanza ...以及在開發機器上放置lib的實際安裝位​​置。 –

+0

您不應該將頭文件或甚至庫文件複製到您的項目中。然而,您可能需要調整環境變量,項目文件中的編譯器設置或IDE中的某些設置,以告知編譯器在哪裏查找。 – drescherjm

回答

4

這取決於您正在使用哪種操作系統和構建工具鏈,但作爲使用linux,gcc和cmake的示例,本文將介紹如何使用opencv構建。

http://docs.opencv.org/trunk/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html

你可以用find_package指令看,cmake的是尋找OpenCV的包含文件。

顯然,您可以直接指定包含路徑g++ -I,但讓cmake爲您找到它具有的優點是,如果您在不同的系統上編譯,它將有更好的機會被發現。如果找不到文件,它也會給你一個錯誤。

最後,你應該確保你有「開發」文件,而不僅僅是庫。開發文件將包含標題。而該庫只有共享對象(*.so)和檔案(*.a),可用於靜態鏈接或運行時鏈接。

+0

教程很有幫助,現在所有功能都按需要運行。也欣賞使用標誌的建議。 –

+0

聽起來不錯。我也認爲托馬斯巴丹的建議很好。你也可以嘗試。我也贊成他的。 – Homer6

3

如果全球的裝機量,你需要告訴編譯器在全球範圍內看,即

#include <opencv2/highgui/highgui.hpp>