I think it's impossible or very dangerous to send pointer / reference to dynamic loaded library from another compiler or ever another languages like C#. And I want to find proofs, but C++ standard documentation is pretty huge.
I think null terminated string will work fine, but how about std::string, or maybe string_view?