Description
With the current build scripts, the tinyxml2 symbols are exported from the behavior_tree_core shared object. The ROS2 middleware also embeds the tinyxml2 library and exports the symbols as well. The ROS2 build will use the tinyxml2 library installed on the target platform, while BehaviorTree.CPP will use its own version (the tinyxml2 source is with the BT library code). If these libraries are different versions only one tinyxml2 version will be found when linking a ROS2 executable. Therefore, one the ROS2 middleware or BT library will be using the wrong version.
TinyXML2 supports the gcc's visibility attribute. I made the following change to work around this:
https://github.com/mjeronimo/BehaviorTree.CPP/commit/f059c2035eda28a9688bf063a428fa2d44cfa9e7
With this, by default, the tinyxml2 symbols will not be exported and will therefore, not conflict.