[ros-users] compile problem nodelet in OSX

Kevin Walchko kevin.walchko at gmail.com
Fri Sep 2 15:06:15 UTC 2011


I am having problems compiling nodelet.

ROS electric, OSX Lion 10.7 using macports and default compiler

I had to define STL use in loader.cpp, otherwise the macports of tinyXML didn't make certain class members available:
#define TIXML_USE_STL

is there a way to define this in CMakeLists.txt?


I am getting this error, but not sure why. I am assuming I have to add something to CMakeLists.txt to make the headers from include/nodelet available, but adding include(${PROJECT_SOURCE_DIR}/include/nodelet) didn't help.

[ 66%] Built target rosbuild_precompile
Linking CXX shared library ../lib/libnodeletlib.dylib
Undefined symbols for architecture x86_64:
  "nodelet::UninitializedException::~UninitializedException()", referenced from:
      nodelet::Nodelet::getMTPrivateNodeHandle() constin nodelet_class.o
      nodelet::Nodelet::getMTNodeHandle() constin nodelet_class.o
      nodelet::Nodelet::getPrivateNodeHandle() constin nodelet_class.o
      nodelet::Nodelet::getNodeHandle() constin nodelet_class.o
      nodelet::Nodelet::getMTCallbackQueue() constin nodelet_class.o
      nodelet::Nodelet::getSTCallbackQueue() constin nodelet_class.o
      vtable for nodelet::UninitializedExceptionin nodelet_class.o
      ...
  "boost::shared_ptr<ros::NodeHandle>::operator*() const", referenced from:
      nodelet::Nodelet::getMTPrivateNodeHandle() constin nodelet_class.o
      nodelet::Nodelet::getMTNodeHandle() constin nodelet_class.o
      nodelet::Nodelet::getPrivateNodeHandle() constin nodelet_class.o
      nodelet::Nodelet::getNodeHandle() constin nodelet_class.o
  "boost::shared_ptr<nodelet::detail::CallbackQueue>::operator*() const", referenced from:
      nodelet::Nodelet::getMTCallbackQueue() constin nodelet_class.o
      nodelet::Nodelet::getSTCallbackQueue() constin nodelet_class.o
  "boost::shared_ptr<bond::Bond>::reset()", referenced from:
      nodelet::Nodelet::~Nodelet()in nodelet_class.o
      nodelet::Nodelet::~Nodelet()in nodelet_class.o
  "boost::shared_ptr<bond::Bond>::~shared_ptr()", referenced from:
      nodelet::Nodelet::~Nodelet()in nodelet_class.o
      nodelet::Nodelet::~Nodelet()in nodelet_class.o
  "boost::shared_ptr<ros::NodeHandle>::~shared_ptr()", referenced from:
      nodelet::Nodelet::~Nodelet()in nodelet_class.o
      nodelet::Nodelet::~Nodelet()in nodelet_class.o
      nodelet::Nodelet::Nodelet()in nodelet_class.o
  "boost::shared_ptr<nodelet::detail::CallbackQueue>::~shared_ptr()", referenced from:
      nodelet::Nodelet::~Nodelet()in nodelet_class.o
      nodelet::Nodelet::~Nodelet()in nodelet_class.o
      nodelet::Nodelet::Nodelet()in nodelet_class.o
      nodelet::detail::CallbackQueue::addCallback(boost::shared_ptr<ros::CallbackInterface> const&, unsigned long long)in callback_queue.o
  "boost::shared_ptr<nodelet::detail::CallbackQueue>::shared_ptr()", referenced from:
      nodelet::Nodelet::Nodelet()in nodelet_class.o
      nodelet::detail::CallbackQueueManager::QueueInfo::QueueInfo()in callback_queue_manager.o
  "boost::shared_ptr<ros::NodeHandle>::shared_ptr()", referenced from:
      nodelet::Nodelet::Nodelet()in nodelet_class.o
  "boost::shared_ptr<bond::Bond>::shared_ptr()", referenced from:
      nodelet::Nodelet::Nodelet()in nodelet_class.o
  "nodelet::MultipleInitializationException::~MultipleInitializationException()", referenced from:
      nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in nodelet_class.o
      vtable for nodelet::MultipleInitializationExceptionin nodelet_class.o
  "boost::shared_ptr<bond::Bond>::operator=(boost::shared_ptr<bond::Bond> const&)", referenced from:
      nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in nodelet_class.o
  "void boost::shared_ptr<nodelet::detail::CallbackQueue>::reset<nodelet::detail::CallbackQueue>(nodelet::detail::CallbackQueue*)", referenced from:
      nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in nodelet_class.o
  "void boost::shared_ptr<ros::NodeHandle>::reset<ros::NodeHandle>(ros::NodeHandle*)", referenced from:
      nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in nodelet_class.o
  "boost::shared_ptr<nodelet::detail::CallbackQueue>::get() const", referenced from:
      nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in nodelet_class.o
  "boost::shared_ptr<ros::NodeHandle>::operator->() const", referenced from:
      nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in nodelet_class.o
  "nodelet::MultipleInitializationException::~MultipleInitializationException()", referenced from:
      vtable for nodelet::MultipleInitializationExceptionin nodelet_class.o
  "nodelet::UninitializedException::~UninitializedException()", referenced from:
      vtable for nodelet::UninitializedExceptionin nodelet_class.o
  "ros::WallDuration::~WallDuration()", referenced from:
      nodelet::detail::CallbackQueue::callOne()    in callback_queue.o
  "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::shared_from_this()", referenced from:
      nodelet::detail::CallbackQueue::addCallback(boost::shared_ptr<ros::CallbackInterface> const&, unsigned long long)in callback_queue.o
  "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::~enable_shared_from_this()", referenced from:
      nodelet::detail::CallbackQueue::~CallbackQueue()in callback_queue.o
      nodelet::detail::CallbackQueue::~CallbackQueue()in callback_queue.o
      nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in callback_queue.o
  "ros::CallbackQueueInterface::CallbackQueueInterface()", referenced from:
      nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in callback_queue.o
  "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::enable_shared_from_this()", referenced from:
      nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in callback_queue.o
  "boost::shared_ptr<boost::mutex>::shared_ptr<boost::mutex>(boost::mutex*)", referenced from:
      nodelet::detail::CallbackQueueManager::ThreadInfo::ThreadInfo()in callback_queue_manager.o
  "boost::shared_ptr<boost::condition_variable>::shared_ptr<boost::condition_variable>(boost::condition_variable*)", referenced from:
      nodelet::detail::CallbackQueueManager::ThreadInfo::ThreadInfo()in callback_queue_manager.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[3]: *** [../lib/libnodeletlib.dylib] Error 1
make[2]: *** [CMakeFiles/nodeletlib.dir/all] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2
[kevin at TARDIS nodelet]$ 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osuosl.org/pipermail/ros-users/attachments/20110902/50aa19ae/attachment-0001.html>


More information about the ros-users mailing list