Difference in loading 3rd party lib from Node vs. Nodelet
I'm trying to use a 3rd party C library (aravis) in a nodelet but one crucial call (arv_camera_new) inexplicably fails. All works fine though when I convert the nodelet into a node (or even when I wrap the C lib in another ROS-independent C++ lib and use that in my executable).
What could be different for the execution of the library code between beeing part of an ELF or SO? ldd output seems to indicate the crucial dependencies (AFAICT) are linked similarly and they (at least aravis itself) show up in the memory maps of the nodelet manager process. If used in a node, the call in question also works outside the main thread. In a nodelet, I can't get it to work no matter what.
Any ideas?
when do you call arv_camera_new? Note that you have to call in init and cannot call in the nodelet constructor!
called it in onInit(), a boost::thread and ros::Timer callback - same result...
I have the same issue right now. Did this ever get resolved?