$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] [Graph] Compilation error with MinGW and Boost 1.33.1
From: Florian.PONROY_at_[hidden]
Date: 2009-03-27 07:16:50
Hi,
I have the following compilation error with MinGW 3.4.5, under Linux :
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_index_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): multiple
definition of `_s_prop_not_found'
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_color_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): first defined
here
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_13
edge_weight_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): multiple
definition of `_s_prop_not_found'
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_color_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): first defined
here
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
buffer_param_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): multiple
definition of `_s_prop_not_found'
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_color_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): first defined
here
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_18
distance_compare_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): multiple
definition of `_s_prop_not_found'
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_color_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): first defined
here
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_18
distance_combine_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): multiple
definition of `_s_prop_not_found'
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_color_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): first defined
here
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
distance_inf_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): multiple
definition of `_s_prop_not_found'
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_color_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): first defined
here
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_15
distance_zero_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): multiple
definition of `_s_prop_not_found'
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_color_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): first defined
here
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_15
graph_visitor_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): multiple
definition of `_s_prop_not_found'
/obj/g++mingwwin32i386_gcc3.4.5-Linux2.6.22.5-jml-051-i686/liblocd_topology_
manager.a(topology.o):topology.cpp:(.data$_ZZN5boost6detail18property_value_
endINS_11no_propertyEE15const_get_valueINS0_24error_property_not_foundENS_14
vertex_color_tEEERKS5_RKS2_PT_T0_E16s_prop_not_found+0x0): first defined
here
The code compiles fine under Linux with g++ though.
I use both the BGL and Dijkstra algorithm. The adjacency lists are defined
this way:
        typedef boost::adjacency_list<boost::listS,
                                      boost::vecS,
                                      boost::directedS
	                             > tGraphReachable;
        typedef boost::adjacency_list<boost::listS,
                                      boost::vecS,
                                      boost::directedS,
                                      boost::no_property,
                                      boost::property<boost::edge_weight_t,
tLinkWeight>
	                             > tGraphShortestpath;
        typedef tGraphReachable::vertex_descriptor tReachableVertex;
        typedef tGraphShortestpath::vertex_descriptor tDijkstraVertex;
        typedef std::vector<tDijkstraVertex> tPredecessorMap;
        typedef std::vector<tLinkWeight> tDistanceMap;
Call to BFS is done this way:
        tGraphReachable graph(m_nodeList.size());
        // Graph construction
        this->PrepareDataForComputeReachableNodes(graph);
        std::vector<tReachableVertex> reachableNodes;
        reachableNodes.reserve(m_nodeList.size());
        tReachableVertex sourceVertex(boost::vertex(m_localNodeId, graph));
        boost::breadth_first_search(graph, sourceVertex,
                        boost::visitor(
                                boost::make_bfs_visitor(
                                        boost::write_property(
 
boost::identity_property_map(),
 
std::back_inserter(reachableNodes),
 
boost::on_discover_vertex()))));
Call to Dijsktra:
        tGraphShortestpath graph;
        for (tLinkList::const_iterator itLink(links.begin());
             links.end() != itLink;
             ++itLink)
        {
                boost::add_edge((*itLink)->m_sourceId,
                                (*itLink)->m_destinationId,
                                (*itLink)->m_weight,
                                graph);
        }
        tDijkstraVertex sourceVertex(boost::vertex(sourceNode, graph));
        tPredecessorMap predecessors(boost::num_vertices(graph));
        tDistanceMap    distances(boost::num_vertices(graph));
        boost::dijkstra_shortest_paths(graph,
                                       sourceVertex,
 
boost::predecessor_map(&predecessors[0])
                                       .distance_map(&distances[0]));
What did I do wrong?
Thanks very much for your help.
-- Florian PONROY Thales Land & Joint France Tel. : +33(0)1 41 304 363 Fax : +33(0)1 41 303 560 Email : florian.ponroy_at_[hidden]