As I understand, you are calling MATLAB engine in your C/C++ application and facing linker errors which are thrown while looking for functions which are used by libmx.so.
Looking at the symbols that are missing ('std::__throw_out_of_range_fmt(char const*, ...)' ) it seems that your application is linked to a wrong version of 'libstdc++'. My guess is that you are using gcc version lower than gcc 4.9.
Here I could say that linking your application with libstdc++.so.6.0.20 (or above) will fix the issue that you have mentioned. But that would not fix all the issue that you might face in the future while calling MATLAB in your C/C++ application.
The libmx.so and libut.so which ship with MATLAB R2016b are configured to be used with a particular version of gcc (gcc 4.9x to be precise). The gcc 4.9 comes with version 6.0.20 of libstdc++.so as stated in the documentation.
So, updating your gcc to version 4.9x would be the best way to avoid this as well as all other linker errors that you might get on your current setup with MATLAB R2016b.
I hope this helps.