Я пытаюсь прочитать в следующем графике, используя boostv graphviz:
graph G {
0[label="1"];
1[label="0"];
2[label="1"];
3[label="1"];
0--1 [label="1.2857"];
1--2 [label="4.86712"];
1--3 [label="2.29344"];
}
Однако, каждый раз, когда я пытаюсь его скомпилировать, я получаю неприятную ошибку:
/tmp/ccnZnPad.o: In function "bool boost::read_graphviz_new<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, Vertex, Edge, boost::no_property, boost::listS> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, Vertex, Edge, boost::no_property, boost::listS>&, boost::dynamic_properties&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&):test.cpp(.text._ZN5boost17read_graphviz_newINS_14adjacency_listINS_4vecSES2_NS_11undirectedSE6Vertex4EdgeNS_11no_propertyENS_5listSEEEEEbRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERT_RNS_18dynamic_propertiesESG_[_ZN5boost17read_graphviz_newINS_14adjacency_listINS_4vecSES2_NS_11undirectedSE6Vertex4EdgeNS_11no_propertyENS_5listSEEEEEbRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERT_RNS_18dynamic_propertiesESG_]+0x98): undefined reference to boost::detail::graph::read_graphviz_new(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::detail::graph::mutate_graph*)'
collect2: error: ld returned 1 exit status
Я понятия не имею, что это значит, я попытался скомпилировать с g++ -lboost_graph test.cpp
и все еще получаю ошибку. Я также попытался включить <libs/graph/src/read_graphviz_new.cpp>
, но моя программа не работает, потому что он не знает, что такое <libs/graph/src/read_graphviz_new.cpp>
. Я не знаю, что мне нужно попробовать дальше, или, может быть, это не правильный способ распечатать это. Любая помощь будет принята с благодарностью!
#include <fstream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/property_map/dynamic_property_map.hpp>
//#include <libs/graph/src/read_graphviz_new.cpp> //breaks if I try to include
#include <boost/graph/graph_utility.hpp>
struct Vertex
{
bool isLeaf;
};
struct Edge
{
double weight;
};
typedef boost::adjacency_list<boost::vecS,boost::vecS, boost::undirectedS, Vertex, Edge> Graph;
int main()
{
Graph g;
boost::dynamic_properties dp;
dp.property("label", get(&Vertex::isLeaf, g));
dp.property("label", get(&Edge::weight, g));
std::ifstream dot("baseTree.dot");
boost::read_graphviz(dot,g,dp);
write_graphviz_dp(std::cout, g, dp);
}