It will be clearer if you get rid of the cli-stuff and only use a C++ which gets called from C#.
It is quite simple possible, as I wrote an
article and demo code about it.Also this
article is worth reading even it is the opposite way, if you consider modiying your com.
Create your com-objects as global object pointers.