component using lwr_fri not linking

Hi!

I created a component which compiled fine on one computer (orocos 2.5.0) and I get linker errors on another computer (orocos 2.6)

The component connects to several of the ports of the lwr_fri component. I added to the manifest.xml:

depend package="kuka_lwr_fri" depend package="lwr_fri"

and I included into the headers:

include lwr_fri/typekit/Types.hpp include kuka_lwr_fri/friComm.h include kuka_lwr_fri/typekit/Types.hpp

(among others, but these should be the important ones. Also, I removed the smaller/larger brackets since they are not displayed correctly in the forum)

The linker errors I get are:

  CMakeFiles/mycomponent.dir/src/mycomponent-component.cpp.o: In function `~OutputPort':
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/OutputPort.hpp:70: undefined reference to `vtable for RTT::OutputPort<lwr_fri::FriJointCommand_<std::allocator<void> > >'
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/OutputPort.hpp:70: undefined reference to `vtable for RTT::OutputPort<lwr_fri::FriJointCommand_<std::allocator<void> > >'
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/OutputPort.hpp:70: undefined reference to `vtable for RTT::OutputPort<lwr_fri::FriJointImpedance_<std::allocator<void> > >'
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/OutputPort.hpp:70: undefined reference to `vtable for RTT::OutputPort<lwr_fri::FriJointCommand_<std::allocator<void> > >'
  CMakeFiles/mycomponent.dir/src/mycomponent-component.cpp.o: In function `~InputPort':
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/InputPort.hpp:100: undefined reference to `vtable for RTT::InputPort<lwr_fri::FriJointState_<std::allocator<void> > >'
  CMakeFiles/mycomponent.dir/src/mycomponent-component.cpp.o: In function `~LwrComponentInterface':
  mypath/ros_workspace/orocos/mycomponent/src/lwrComponentInterface.hpp:43: undefined reference to `RTT::InputPort<lwr_fri::FriJointState_<std::allocator<void> > >::~InputPort()'
  CMakeFiles/mycomponent.dir/src/lwrComponentInterface.cpp.o: In function `InputPort':
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/InputPort.hpp:97: undefined reference to `vtable for RTT::InputPort<lwr_fri::FriJointState_<std::allocator<void> > >'
  CMakeFiles/mycomponent.dir/src/lwrComponentInterface.cpp.o: In function `LwrComponentInterface':
  mypath/ros_workspace/orocos/mycomponent/src/lwrComponentInterface.cpp:9: undefined reference to `RTT::OutputPort<lwr_fri::FriJointCommand_<std::allocator<void> > >::OutputPort(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)'
  mypath/ros_workspace/orocos/mycomponent/src/lwrComponentInterface.cpp:9: undefined reference to `RTT::OutputPort<lwr_fri::FriJointImpedance_<std::allocator<void> > >::OutputPort(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)'
  mypath/ros_workspace/orocos/mycomponent/src/lwrComponentInterface.cpp:9: undefined reference to `RTT::InputPort<lwr_fri::FriJointState_<std::allocator<void> > >::~InputPort()'
  CMakeFiles/mycomponent.dir/src/lwrComponentInterface.cpp.o: In function `RTT::InputPort<lwr_fri::FriJointState_<std::allocator<void> > >::read(lwr_fri::FriJointState_<std::allocator<void> >&, bool)':
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/InputPort.hpp:155: undefined reference to `RTT::InputPort<lwr_fri::FriJointState_<std::allocator<void> > >::do_read(lwr_fri::FriJointState_<std::allocator<void> >&, RTT::FlowStatus&, bool, boost::tuples::tuple<boost::shared_ptr<RTT::internal::ConnID>, boost::intrusive_ptr<RTT::base::ChannelElementBase>, RTT::ConnPolicy, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> const&)'
  CMakeFiles/mycomponent.dir/src/lwrComponentInterface.cpp.o: In function `~OutputPort':
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/OutputPort.hpp:70: undefined reference to `vtable for RTT::OutputPort<lwr_fri::FriJointImpedance_<std::allocator<void> > >'
  mypath/ros_workspace/orocos/orocos_toolchain/log4cpp/../install/include/rtt/OutputPort.hpp:70: undefined reference to `vtable for RTT::OutputPort<lwr_fri::FriJointImpedance_<std::allocator<void> > >'

I do not have the slightest clue what can be the problem here. The lwr_fri component is available on the computer and is also compiled. I dont understand the errors and I dont know how to debug them. I only posted what I considered important, I can add further stuff on request. Any help appreciated!

Kind regards Mirko

lwr_fri not linking

Hi,

I'm running into the same issue... Maybe have you (or someone) solved it? I really have no idea of how to manage it.

Really thank you, Federico

PS I'm using orocos 2.6.0 on both the computers, but on the first everything is right, on the second I get this error...