I am compiling HPX (a high performance computing library) in macos and it uses Boost. I am using clang 10 with meson as the build system. Using nm to dump the library and the application binary to inspect the symbols, I found that there is a one letter difference between them. The application that I am building, as the beginning of my learning path, is the HPX hello world example in the official documentation.
In libboost_filesystem-mt.dylib the symbol is
__ZN5boost10filesystem6detail28directory_iterator_constructERNS0_18directory_iteratorERKNS0_4pathEjPNS_6system10error_codeE
and in the application it is
__ZN5boost10filesystem6detail28directory_iterator_constructERNS0_18directory_iteratorERKNS0_4pathEPNS_6system10error_codeE
The only difference is a j character added after the path part of the mangled name in libboost_filesystem-mt.dylib. Why does this happen and what can I do about it? It is beyond my knowledge and any help will be profoundly appreciated. Thanks.
According to the excellent https://demangler.com/, the first of these demangles to:
and the second to:
And you can now see that the difference is an extra
unsigned intparameter in the first version. Why that should be I don't know, but maybe that gives you some clue as to what is going on.