Hi,
I should be able to link my application with GNU libc++ or in fact with any libc++ implementation right ?
Indeed I understand that libcef.so is created by using static libs from chromium (base, content, etc..) and using the static libc++.a from "chromium/src/buildtools/third_party/libc++" (if use_custom_libcxx is set true which is the case by default on Linux example Ubuntu 20.04) and using the dynamic shared library libc.so (libc.so and not the static libc.a mostly because of licence issues).
And the intention is that libcef.so only exposes the C API from CEF, this way there is no c++ implementation mixing with the application.
So far so good (except why all the internal CEF C++ api is exported in libcef.so, I can see that with "nm libcef.so", I was expecting to see only "cef_" C functions but I can see all C++ internal functions)
Then there is the CEF wrapper API and lib which is built to create: libcef_dll_wrapper.a
This wrapper module is only using the CEF C api functions, and the C++ functions that are defined in this wrapper module , i.e. it does not build or use any C++ function from chromium or cef, defined outside of the directory chromium/src/cef/libcef_dll/wrapper.
This way when an application use the CEF C++ api, it does not matter which libc++ implementation the application is linking with.
I.e. if an application create an std::string and pass it to the CEF C++ API and then if this string is destroyed by the cef wrapper module then everything should be ok.
But I noticed that the wrapper module is using CEF C++ from outside the wrapper module itself, example CefString.
So it is possible that the underlying c++ std::string of CefString created in libcef.so (so by chromium's libc++ implementation) is then destroyed in the libc++ that the application links with, leading to undefined behaviours and likely crashes.
Any comments on all of these would be very appreciated, I am trying to understand CEF a bit more
Thanks!