我的下载文件夹中有Boost库。当我尝试包含特定文件时。它抛出错误。下面是我执行的代码和步骤。
\ main.cpp
#include "type_index.hpp"
int main(){
//some code
return 0;
}
我打开命令提示符并运行以下命令
g++ -IC:\Users\Owner\Downloads\boost_1_70_0\boost -o main main.cpp
我在命令提示符下出现以下错误
In file included from main.cpp:2:0:
C:\Users\Owner\Downloads\boost_1_70_0\boost/type_index.hpp:17:28: fatal error: boost/config.hpp: No such file or directory
#include <boost/config.hpp>
^
compilation terminated.
如何运行上述文件?我是否必须将boost目录的位置从downloads文件夹更改为目录中的某些位置mingw
?
假设boost
已正确配置并在您的系统上构建,boost include root的集线器将位于一个位置。例如:如果您在中下载并构建了boost c:\Stuff\boost_1_70_0
,则该文件夹中将是boost包含集的中心c:\Stuff\boost_1_70_0\boost
,并且其中包含所有boost标题。
通过修改包含路径以提供对boost包含中心的访问来引用boost;不以提供到最上面的头在所述轮毂。与openssl相似,boost的所有序言都包含在自己的标头中,并带有boost/
。boost的使用者应该这样做,因此,include路径必须包括boost/
可以找到集线器的文件夹。它应该不包括boost/
轮毂本身作为路径的一部分。
例如:这是正确的
g++ -Ic:\Stuff\boost_1_70_0 -o main main.cpp
另一方面,这是错误的:
g++ -Ic:\Stuff\boost_1_70_0\boost -o main main.cpp
对于前者,当代码包括:
#include <boost/asio.hpp>
搜索include路径,并找到文件。此外,在该标头中,当编译器看到以下内容时:
#include <boost/asio/associated_allocator.hpp>
它仍然可以正确解析,因为将“内容”放在包含路径中文件夹之一的末尾是可行的。
现在,考虑错误的情况。如果将包含路径配置为意外指定boost/
根集线器本身,会发生什么?好了,现在您可以执行以下操作:
#include <asio.hpp>
但是一旦预处理器在该标头上启动,它将看到:
#include <boost/asio/associated_allocator.hpp>
嗯.. 预处理程序将寻找并永远找不到它
概要
在源代码中使用boost标头时,始终将其与boost hub序言一起使用:
#include <boost/headername.hpp>
并始终boost/
在构建配置中包含集线器所在的文件夹,作为修改后的包含路径;包括集线器在内的不完整路径boost/
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句