Ask Your Question

Revision history [back]

Linker errors with "assimp" rosdep when depending on geometric_shapes

When creating a simple package with the only dependencies

 <depend package="roscpp"/>
 <depend package="geometric_shapes"/>

(add a "Hello World"-style cpp with no includes just that there's something to compile) there are the following linker errors concerning "assimp" when running rosmake:

/opt/ros/electric/stacks/arm_navigation/geometric_shapes/lib/libgeometric_shapes.so: undefined reference to `Assimp::Importer::~Importer()'                   
/opt/ros/electric/stacks/arm_navigation/geometric_shapes/lib/libgeometric_shapes.so: undefined reference to `Assimp::Importer::ReadFileFromMemory(void const*, unsigned long, unsigned int, char const*)'
/opt/ros/electric/stacks/arm_navigation/geometric_shapes/lib/libgeometric_shapes.so: undefined reference to `Assimp::Importer::Importer()'
collect2: ld returned 1 exit status

Originally my package was depending on planning_models and kdl_parser, but I have nailed the problem down to this single dependency on geometric_shapes. Before electric, "assimp" was a ROS package and the dependency was recursively passed on. Is this not the case with rosdeps? geometric_shapes does list the system package assimp as rosdep (and thus compiled fine). The only solution I found for my package was to add the dependency

<depend package="assimp" />

But is that the actually right way, since the assimp package is deprecated? Adding assimp as rosdep did not help here.

Linker errors with "assimp" rosdep when depending on geometric_shapes

When creating a simple package with the only dependencies

 <depend package="roscpp"/>
 <depend package="geometric_shapes"/>

(add a "Hello World"-style cpp with no includes just that there's something to compile) there are the following linker errors concerning "assimp" when running rosmake:

/opt/ros/electric/stacks/arm_navigation/geometric_shapes/lib/libgeometric_shapes.so: undefined reference to `Assimp::Importer::~Importer()'                   
/opt/ros/electric/stacks/arm_navigation/geometric_shapes/lib/libgeometric_shapes.so: undefined reference to `Assimp::Importer::ReadFileFromMemory(void const*, unsigned long, unsigned int, char const*)'
/opt/ros/electric/stacks/arm_navigation/geometric_shapes/lib/libgeometric_shapes.so: undefined reference to `Assimp::Importer::Importer()'
collect2: ld returned 1 exit status

Originally my package was depending on planning_models and kdl_parser, but I have nailed the problem down to this single dependency on geometric_shapes. Before electric, "assimp" was a ROS package and the dependency was recursively passed on. Is this not the case with rosdeps? geometric_shapes does list the system package assimp as rosdep (and thus compiled fine). The only solution I found for my package was to add the dependency

<depend package="assimp" />

But is that the actually right way, since the assimp package is deprecated? Adding assimp as rosdep did not help here.here. (All tested on Ubuntu 11.04 64bit with the latest released electric debs)