簡體   English   中英

包含包含標題的目錄時出現編譯錯誤

[英]compilation error when including directory containing headers

我有一個目錄maths ,它是一個僅由頭文件組成的庫。 我試圖通過在主目錄中運行以下命令來編譯程序:

g++ -I ../maths prog1.cpp prog2.cpp test.cpp -o et -lboost_date_time -lgsl -lgslcblas

但出現以下編譯錯誤:

prog1.cpp:4:23: fatal error: maths/Dense: No such file or directory
compilation terminated.
prog2.cpp:6:23: fatal error: maths/Dense: No such file or directory
compilation terminated.

maths與.cpp文件位於同一目錄(即我的主目錄)中,我也從我的主目錄運行編譯行。

prog1.cpp和prog2.cpp在第4行和第6行分別具有以下標頭#include<maths/Dense> ,因此出現錯誤。

我如何解決它。

您可以將include路徑更改為-I..或將#include <Dense>更改為#include <Dense>

請稍等,如果maths與源文件位於同一目錄中,並且這是當前目錄,則可以將include路徑更改為-I. 或您要包含的內容以#include "Dense"

數學與.cpp文件位於同一目錄(即我的主目錄)

您的包含路徑為-I ../maths 您需要-I ./maths或更簡單的-I maths因為maths當前目錄的子目錄,而不是父目錄的子目錄。 對?

然后在您的C ++文件中,使用#include <Dense> 如果要使用#include <maths/Dense> ,則需要調整include路徑。 但是,使用-I. 可能會導致大問題1 ,我強烈建議您要這樣做。

相反,通常的做法是包含一個include子目錄。 因此,您的文件夾結構最好如下所示:

./
+ include/
| + maths/
|   + Dense
|
+ your_file.cpp

然后使用-I include ,在您的C ++文件中, #include <maths/Dense>


1)考慮如果您有一個文件./map.cpp從中生成一個名為./map的可執行文件,該怎么./map 在代碼中的任何位置使用#include <map> ,這將嘗試包含./map而不是map標准標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM