I was just digging a bit more to understand what is going on by demangling the names in the library.
This is a function that is in your compiled preCICE library:
$ c++filt _ZN7precice15SolverInterfaceC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_ii
precice::SolverInterface::SolverInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)
This is the function the OpenFOAM adapter tries to find during compilation/linking
$ c++filt _ZN7precice15SolverInterfaceC1ERKSsS2_ii
precice::SolverInterface::SolverInterface(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)
So the difference is actually (top is what is in the preCICE library, bottom is what is searched during adapter compilation)
- precice::SolverInterface::SolverInterface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)
+ precice::SolverInterface::SolverInterface(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)
that the __cxx11
part is missing.
If I google for this I end up with information about the dual ABI of GCC and there are also some posts like this one or this one on Stack Overflow. The posts are all fairly old though.
Has there been any change in ABI definitions or how compilers work with that? Could this be a Fedora specific thing? Could it be that the adapter build system picks up something wrong?!