Given that you are using a C ++ library, I assume that it uses C ++ semantics, such as classes, and not just expansion procedures. If this is the case, then, as a rule, this is done using a manually created C ++ managed library of interactions.
Basically, you create a C ++ managed library in Visual Studio, reference an existing C ++ library, and create a managed wrapper around existing C ++ classes. Then you reference this (managed) C ++ assembly in your C # project and include the original (unmanaged) C ++ library in your C # assembly in the same way as the file that is placed in the assembly directory.
, , ++, P/Invoke (DllImport).
, # P/Invoke.
, ( , ++, ++ #, , -, ++ #) , . .