Difference in loading 3rd party lib from Node vs. Nodelet

asked 2015-05-07 12:17:17 -0500

eof gravatar image

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?

edit retag flag offensive close merge delete

Comments

when do you call arv_camera_new? Note that you have to call in init and cannot call in the nodelet constructor!

Wolf gravatar image Wolf  ( 2015-05-08 16:00:08 -0500 )edit

called it in onInit(), a boost::thread and ros::Timer callback - same result...

eof gravatar image eof  ( 2015-05-10 12:26:13 -0500 )edit

I have the same issue right now. Did this ever get resolved?

Keerthi Raj gravatar image Keerthi Raj  ( 2018-02-19 17:50:27 -0500 )edit