[英]Visual Studio link error when including headers from another directory
[英]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.