使用带有EMBARCADERO RAD C ++ XE5的Boost Graph Library

时间:2013-12-26 07:21:38

标签: c++ boost delphi-xe5

我想使用BOOST C ++ lib和RAD XE 5编译器编写程序。

如果我用:

导入boost库
#include <boost_1_50/boost/config.hpp>
#include <boost_1_50/boost/graph/graph_traits.hpp>
#include <boost_1_50/boost/adjacency_list.hpp>
#include <boost_1_50/boost/dijkstra_shortest_paths.hpp>

我收到以下错误消息

[bcc64 Fataler Fehler] config.hpp(26):'boost / config / user.hpp'-Datei nicht gefunden

我的Boost文件夹中有很多user.hpp文件。

错误来自config.hpp文件:

// include it first:
#ifdef BOOST_USER_CONFIG
#  include BOOST_USER_CONFIG
#endif

如何在C ++ XE 5中正确包含boost lib? (有关我的编译器设置作为屏幕转储的更多信息)

C** screen dump

这里有一个完整的不编译示例代码

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit_shortpath.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"


#include "stdafx.h"


#include <iostream>
#include <fstream>

#include <boost_1_50/boost/config.hpp>
#include <boost_1_50/boost/graph/graph_traits.hpp>
#include <boost/adjacency_list.hpp>
#include <boost/dijkstra_shortest_paths.hpp>



TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}

/

1 个答案:

答案 0 :(得分:1)

我不得不注意到你的#include喜欢

   #include <boost_1_50/boost/config.hpp>
   #include <boost_1_50/boost/graph/graph_traits.hpp>
   #include <boost_1_50/boost/adjacency_list.hpp>

不正确:

一个。你不应该直接包含“config.hpp”,留下来提升。

B中。你应该调整你的路径,包括不要提及Boost版本

   #include <boost/graph/graph_traits.hpp>
   #include <boost/adjacency_list.hpp>

你的麻烦最可能的原因是,由于你的#include风格,你会把两个版本的Boost搞得一团糟。

支持您的编译器(Embarcadero,前Borland,对吧?)在新版本的Boost中不是很一致。可能是Boost安装无法推断出此编译器的某些属性限制和优化。 Boost开发人员甚至不知道如何检索其版本:http://lists.boost.org/Archives/boost/2013/09/206546.php

很可能你必须自己做,或者可以查阅一些编译器文档,如何使用Boost。当支持编译器(或其前身)时,您甚至可能希望切换到旧版本的Boost(1.49?)。

回答您的具体问题,要禁用用户配置标头,您可以在编译器设置中#define BOOST_NO_USER_CONFIG。但如果你必须这样做,很可能你已经陷入了严重的麻烦。