I think the best way to do this is to provide C shells around the C ++ library. This was pretty popular 10 or more years ago when I was programming in C ++, but I don't know if this was done anymore.
Basically, for each class Cfor each constructor ctorthat must be open to create a method extern "C" CPtr cCtor(....)that returns an opaque pointer CPtr, and for each function functhat you need to open, you createextern "C" cFunc(CPtr,....)
- CStruct, - , .