I had the same problem. The best way I found to fix it was to add <div><br></div><div>-DTIXML_USE_STL</div><div><p class="p1">to the exported cflags argument of pluginling. </p><div>Then that problem was fixed, the program compiled, but on link I had a whole bunch of nasty boost errors and gave up on electric for a while. </div>
<div><br></div><div>--Nick </div><div><br><div class="gmail_quote">On Fri, Sep 2, 2011 at 9:49 AM, Brian Gerkey <span dir="ltr"><<a href="mailto:gerkey@willowgarage.com">gerkey@willowgarage.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">hi Kevin,<br>
<div class="im"><br>
On Fri, Sep 2, 2011 at 8:06 AM, Kevin Walchko <<a href="mailto:kevin.walchko@gmail.com">kevin.walchko@gmail.com</a>> wrote:<br>
> I am having problems compiling nodelet.<br>
> ROS electric, OSX Lion 10.7 using macports and default compiler<br>
> I had to define STL use in loader.cpp, otherwise the macports of tinyXML<br>
> didn't make certain class members available:<br>
> #define TIXML_USE_STL<br>
> is there a way to define this in CMakeLists.txt?<br>
<br>
</div>Did the tinyxml source rosdep not work for you?  `rosdep install<br>
nodelet` should build and install an appropriately configured version<br>
of tinyxml from <a href="https://kforge.ros.org/rosrelease/sourcedeps/tinyxml" target="_blank">https://kforge.ros.org/rosrelease/sourcedeps/tinyxml</a>.<br>
I wrote that because I was having the same trouble you are (and more,<br>
as I recall) with using the macports version of tinyxml.<br>
<div class="im"><br>
> I am getting this error, but not sure why. I am assuming I have to add<br>
> something to CMakeLists.txt to make the headers from include/nodelet<br>
> available, but adding include(${PROJECT_SOURCE_DIR}/include/nodelet) didn't<br>
> help.<br>
><br>
> [ 66%] Built target rosbuild_precompile<br>
> Linking CXX shared library ../lib/libnodeletlib.dylib<br>
> Undefined symbols for architecture x86_64:<br>
<br>
</div>Not sure what's going on there.  I was just able to build nodelet on<br>
my 10.6 machine (and I'm about to add it to the electric-devel builds<br>
so that it keeps working).<br>
<br>
        brian.<br>
<div><div></div><div class="h5"><br>
>   "nodelet::UninitializedException::~UninitializedException()", referenced<br>
> from:<br>
>       nodelet::Nodelet::getMTPrivateNodeHandle() constin nodelet_class.o<br>
>       nodelet::Nodelet::getMTNodeHandle() constin nodelet_class.o<br>
>       nodelet::Nodelet::getPrivateNodeHandle() constin nodelet_class.o<br>
>       nodelet::Nodelet::getNodeHandle() constin nodelet_class.o<br>
>       nodelet::Nodelet::getMTCallbackQueue() constin nodelet_class.o<br>
>       nodelet::Nodelet::getSTCallbackQueue() constin nodelet_class.o<br>
>       vtable for nodelet::UninitializedExceptionin nodelet_class.o<br>
>       ...<br>
>   "boost::shared_ptr<ros::NodeHandle>::operator*() const", referenced from:<br>
>       nodelet::Nodelet::getMTPrivateNodeHandle() constin nodelet_class.o<br>
>       nodelet::Nodelet::getMTNodeHandle() constin nodelet_class.o<br>
>       nodelet::Nodelet::getPrivateNodeHandle() constin nodelet_class.o<br>
>       nodelet::Nodelet::getNodeHandle() constin nodelet_class.o<br>
>   "boost::shared_ptr<nodelet::detail::CallbackQueue>::operator*() const",<br>
> referenced from:<br>
>       nodelet::Nodelet::getMTCallbackQueue() constin nodelet_class.o<br>
>       nodelet::Nodelet::getSTCallbackQueue() constin nodelet_class.o<br>
>   "boost::shared_ptr<bond::Bond>::reset()", referenced from:<br>
>       nodelet::Nodelet::~Nodelet()in nodelet_class.o<br>
>       nodelet::Nodelet::~Nodelet()in nodelet_class.o<br>
>   "boost::shared_ptr<bond::Bond>::~shared_ptr()", referenced from:<br>
>       nodelet::Nodelet::~Nodelet()in nodelet_class.o<br>
>       nodelet::Nodelet::~Nodelet()in nodelet_class.o<br>
>   "boost::shared_ptr<ros::NodeHandle>::~shared_ptr()", referenced from:<br>
>       nodelet::Nodelet::~Nodelet()in nodelet_class.o<br>
>       nodelet::Nodelet::~Nodelet()in nodelet_class.o<br>
>       nodelet::Nodelet::Nodelet()in nodelet_class.o<br>
>   "boost::shared_ptr<nodelet::detail::CallbackQueue>::~shared_ptr()",<br>
> referenced from:<br>
>       nodelet::Nodelet::~Nodelet()in nodelet_class.o<br>
>       nodelet::Nodelet::~Nodelet()in nodelet_class.o<br>
>       nodelet::Nodelet::Nodelet()in nodelet_class.o<br>
><br>
> nodelet::detail::CallbackQueue::addCallback(boost::shared_ptr<ros::CallbackInterface><br>
> const&, unsigned long long)in callback_queue.o<br>
>   "boost::shared_ptr<nodelet::detail::CallbackQueue>::shared_ptr()",<br>
> referenced from:<br>
>       nodelet::Nodelet::Nodelet()in nodelet_class.o<br>
>       nodelet::detail::CallbackQueueManager::QueueInfo::QueueInfo()in<br>
> callback_queue_manager.o<br>
>   "boost::shared_ptr<ros::NodeHandle>::shared_ptr()", referenced from:<br>
>       nodelet::Nodelet::Nodelet()in nodelet_class.o<br>
>   "boost::shared_ptr<bond::Bond>::shared_ptr()", referenced from:<br>
>       nodelet::Nodelet::Nodelet()in nodelet_class.o<br>
><br>
> "nodelet::MultipleInitializationException::~MultipleInitializationException()",<br>
> referenced from:<br>
>       nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > const&, std::map<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >, std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >,<br>
> std::less<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > const,<br>
> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > ><br>
> const&, std::vector<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> >, std::allocator<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > > > const&,<br>
> nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in<br>
> nodelet_class.o<br>
>       vtable for nodelet::MultipleInitializationExceptionin nodelet_class.o<br>
>   "boost::shared_ptr<bond::Bond>::operator=(boost::shared_ptr<bond::Bond><br>
> const&)", referenced from:<br>
>       nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > const&, std::map<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >, std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >,<br>
> std::less<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > const,<br>
> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > ><br>
> const&, std::vector<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> >, std::allocator<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > > > const&,<br>
> nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in<br>
> nodelet_class.o<br>
>   "void<br>
> boost::shared_ptr<nodelet::detail::CallbackQueue>::reset<nodelet::detail::CallbackQueue>(nodelet::detail::CallbackQueue*)",<br>
> referenced from:<br>
>       nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > const&, std::map<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >, std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >,<br>
> std::less<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > const,<br>
> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > ><br>
> const&, std::vector<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> >, std::allocator<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > > > const&,<br>
> nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in<br>
> nodelet_class.o<br>
>   "void<br>
> boost::shared_ptr<ros::NodeHandle>::reset<ros::NodeHandle>(ros::NodeHandle*)",<br>
> referenced from:<br>
>       nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > const&, std::map<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >, std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >,<br>
> std::less<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > const,<br>
> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > ><br>
> const&, std::vector<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> >, std::allocator<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > > > const&,<br>
> nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in<br>
> nodelet_class.o<br>
>   "boost::shared_ptr<nodelet::detail::CallbackQueue>::get() const",<br>
> referenced from:<br>
>       nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > const&, std::map<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >, std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >,<br>
> std::less<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > const,<br>
> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > ><br>
> const&, std::vector<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> >, std::allocator<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > > > const&,<br>
> nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in<br>
> nodelet_class.o<br>
>   "boost::shared_ptr<ros::NodeHandle>::operator->() const", referenced from:<br>
>       nodelet::Nodelet::init(std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > const&, std::map<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >, std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> >,<br>
> std::less<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > const,<br>
> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > ><br>
> const&, std::vector<std::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> >, std::allocator<std::basic_string<char,<br>
> std::char_traits<char>, std::allocator<char> > > > const&,<br>
> nodelet::detail::CallbackQueueManager*, boost::shared_ptr<bond::Bond>)in<br>
> nodelet_class.o<br>
><br>
> "nodelet::MultipleInitializationException::~MultipleInitializationException()",<br>
> referenced from:<br>
>       vtable for nodelet::MultipleInitializationExceptionin nodelet_class.o<br>
>   "nodelet::UninitializedException::~UninitializedException()", referenced<br>
> from:<br>
>       vtable for nodelet::UninitializedExceptionin nodelet_class.o<br>
>   "ros::WallDuration::~WallDuration()", referenced from:<br>
>       nodelet::detail::CallbackQueue::callOne()    in callback_queue.o<br>
><br>
> "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::shared_from_this()",<br>
> referenced from:<br>
><br>
> nodelet::detail::CallbackQueue::addCallback(boost::shared_ptr<ros::CallbackInterface><br>
> const&, unsigned long long)in callback_queue.o<br>
><br>
> "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::~enable_shared_from_this()",<br>
> referenced from:<br>
>       nodelet::detail::CallbackQueue::~CallbackQueue()in callback_queue.o<br>
>       nodelet::detail::CallbackQueue::~CallbackQueue()in callback_queue.o<br>
><br>
> nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in<br>
> callback_queue.o<br>
>   "ros::CallbackQueueInterface::CallbackQueueInterface()", referenced from:<br>
><br>
> nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in<br>
> callback_queue.o<br>
><br>
> "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::enable_shared_from_this()",<br>
> referenced from:<br>
><br>
> nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in<br>
> callback_queue.o<br>
><br>
> "boost::shared_ptr<boost::mutex>::shared_ptr<boost::mutex>(boost::mutex*)",<br>
> referenced from:<br>
>       nodelet::detail::CallbackQueueManager::ThreadInfo::ThreadInfo()in<br>
> callback_queue_manager.o<br>
><br>
> "boost::shared_ptr<boost::condition_variable>::shared_ptr<boost::condition_variable>(boost::condition_variable*)",<br>
> referenced from:<br>
>       nodelet::detail::CallbackQueueManager::ThreadInfo::ThreadInfo()in<br>
> callback_queue_manager.o<br>
> ld: symbol(s) not found for architecture x86_64<br>
> collect2: ld returned 1 exit status<br>
> make[3]: *** [../lib/libnodeletlib.dylib] Error 1<br>
> make[2]: *** [CMakeFiles/nodeletlib.dir/all] Error 2<br>
> make[1]: *** [all] Error 2<br>
> make: *** [all] Error 2<br>
> [kevin@TARDIS nodelet]$<br>
><br>
</div></div>> _______________________________________________<br>
> ros-users mailing list<br>
> <a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
> <a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
><br>
><br>
_______________________________________________<br>
ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
<a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
</blockquote></div><br></div></div>