This is because your library is compiled against libstdc++, while Unreal by default uses bundled libc++. Different STL implementations decorate symbols differently to avoid clashes (which would be even worse).
Your options are:
- compile your library against libc++ (which means using clang with -stdlib=libc++ argument)
- switch LinuxToolChain.cs to NOT use libc++ (but that may mean rebuilding some other libraries bundled with Unreal).
- Avoid using STL across module boundaries (have extern “C” interface for your library).
If you’re using UE earlier than 4.16, you’ll need to remove (in LinuxToolChain.cs) the linker script that hides new/delete signatures or you may run into other obscure problems.