ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Hi,

I ran into the same issue and tried to find a workaround that lets you use the pylon library exactly as intended until basler comes up with a solution.

The basic idea is to rename the symbols in the affected files.

For example if we would rename a symbol from _ZTIN5boost21thread_resource_errorE to _ZTIN5BOOST21thread_resource_errorE and all references to it as well then it could easily coexist with the boost version of ROS

The problem ist that one can not simply change symbol names in an elf file because they are stored in a hash table and renaming it would result in a different hash and cause the loader to not find the specified symbol.

Fortunately the hash function is very simple and I derived similar names that cause a hash collision and thus have the same index in the hash table despite the different name.

Long story short: use the following five commands to change the symbolnames in the pylon libraries and it should be able to easily coexist with any other boost version.

cd <to your pylon installation> (i.e. cd /opt/pylon )

sudo perl -pi -e 's/5boost/5dOost/g' lib/libpylonbase-2.3.3.so
sudo perl -pi -e 's/5boost/5dOost/g' lib/libpylongigesupp-2.3.3.so
sudo perl -pi -e 's/5boost/5dOost/g' lib/pylon/tl/pyloncamemu-2.3.3.so
sudo perl -pi -e 's/5boost/5dOost/g' lib/pylon/tl/pylongige-2.3.3.so

I did not have time to fully test it but my ROS node can now be started without the shared_ptr exception and the pylonviewer still works (although I currently tested it only with emulated cameras)

I will update this post if I find any problems, but you are welcome to give me feedback as well.

Best regards Michael