Can';t使用Boost graphviz.hpp编译代码

Can';t使用Boost graphviz.hpp编译代码,boost,graphviz,Boost,Graphviz,我试图使用read_graphviz扩展名将graphviz.dot文件拉入Boost Grpah。这是我的样品。我无法编译它。我在代码之后发布了g++错误消息,但是我不得不这么做,但是它很短,如果不进行重大的重新格式化,就无法在这里发布 graphviz.hpp库中的文档过于简洁,无法指导我正确的方向。有人有什么想法吗 #include <iostream> #include <boost/graph/graph_traits.hpp> #include <boo

我试图使用read_graphviz扩展名将graphviz.dot文件拉入Boost Grpah。这是我的样品。我无法编译它。我在代码之后发布了g++错误消息,但是我不得不这么做,但是它很短,如果不进行重大的重新格式化,就无法在这里发布

graphviz.hpp库中的文档过于简洁,无法指导我正确的方向。有人有什么想法吗

#include <iostream>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/property_map.hpp>
#include <boost/graph/graphviz.hpp>

int main( int argc, char* argv[] )
{
  assert( argc == 2 );

  std::ifstream dotFile( argv[1], std::ifstream::in );

  typedef boost::adjacency_list<> Graph;
  Graph graph( 17 );  

  boost::dynamic_properties properties;
  boost::property_map< Graph, boost::vertex_name_t >::type name = get( boost::vertex_name, graph );
  properties.property( "node_id", name );

  bool readResult;
  readResult = read_graphviz( dotFile, graph, properties );
  return 0;
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
断言(argc==2);
std::ifstream点文件(argv[1],std::ifstream::in);
typedef boost::邻接列表图;
图表(17);
boost::动态_属性;
boost::property\u map::type name=get(boost::vertex\u name,Graph);
属性(“节点id”,名称);
bool-readResult;
readResult=read_graphviz(点文件、图形、属性);
返回0;

g++-Wall-c-o graphvizTest.o graphvizTest.cpp
/usr/include/boost/dynamic_property_map.hpp:在成员函数中
std::string boost::detail::动态属性映射适配器::获取字符串(const boost::any&)
[带属性映射=
矢量调整列表顶点属性映射<
boost::邻接列表<
boost::vecS,boost::vecS,boost::directedS,
boost::no_属性,boost::no_属性,
boost::no_属性,boost::list
>,
boost::邻接列表<
boost::vecS,boost::vecS,boost::directedS,boost::no_属性,
boost::no_属性,boost::no_属性,boost::list
>*, 
boost::detail::找不到错误\u属性\u,
boost::detail::error\u property\u未找到&,
boost::顶点名称
>
]':     
graphvizTest.cpp:29:从此处实例化
/usr/include/boost/dynamic_property_map.hpp:196:错误:与“运算符”不匹配,
Reference=boost::detail::error\u property\u not\u found&,K=long unsigned int
]
...

图形中没有名为
name
的节点属性,因此从
get(boost::vertex\u name,graph)
获取的属性映射是错误的。请查看文档,了解如何为
boost::vertex\u name
添加顶点属性(使用旧式属性)或者添加一个捆绑属性来表示名称,并在
dynamic_properties
对象中使用该属性而不是
get
表达式。

您没有包括graphvizTest.cpp的第29行……我在提交问题时清理了代码并删除了几行。导致错误的那一行是最后一行的第二行,即ca我要读一读图表。
g++   -Wall   -c -o graphvizTest.o graphvizTest.cpp
/usr/include/boost/dynamic_property_map.hpp: In member function 
std::string boost::detail::dynamic_property_map_adaptor<PropertyMap>::get_string(const boost::any&) 
[with PropertyMap = 
 boost::vec_adj_list_vertex_property_map<
  boost::adjacency_list<
   boost::vecS, boost::vecS, boost::directedS, 
   boost::no_property, boost::no_property, 
   boost::no_property, boost::listS
  >,
  boost::adjacency_list<
   boost::vecS, boost::vecS, boost::directedS, boost::no_property, 
   boost::no_property, boost::no_property, boost::listS
  >*, 
  boost::detail::error_property_not_found, 
  boost::detail::error_property_not_found&, 
  boost::vertex_name_t
 >
]':     
graphvizTest.cpp:29:   instantiated from here    
/usr/include/boost/dynamic_property_map.hpp:196: error: no match for 'operator<<' in 'out << boost::get 
[with 
PropertyMap = 
 boost::vec_adj_list_vertex_property_map<
  boost::adjacency_list<
   boost::vecS, boost::vecS, boost::directedS, boost::no_property, boost::no_property, 
   boost::no_property, boost::listS
  >, 
  boost::adjacency_list<
   boost::vecS, boost::vecS, boost::directedS, boost::no_property, boost::no_property, 
   boost::no_property, boost::listS
  >*, 
  boost::detail::error_property_not_found, 
  boost::detail::error_property_not_found&, 
  boost::vertex_name_t
 >, 
Reference = boost::detail::error_property_not_found&, K = long unsigned int
]

...