Una sessione tormentata quella di Kate, che si è inciampata su alcuni semplici esempi con COM e progetti Console.
La panoramica c'è conqunque stata e si sono prese in considerazione le varie strade.
Runtime Callable Wrapper per l'interop da NET a COM, PInvoke e uso di progetti misti C++ managed/unmanaged. Qui le cose si fanno più complesse perchè mentre per gli exe non ci sono grossi problemi, nelle dll mischiare non conviene.
Per i cari vecchi oggetti COM, la soluzione che mi è piaciuta di più (anche se non è quella preferita da Kate) è quella del refactoring. Consiste nel migrare il codice C++ nativo in una dll pura. Quindi creare due distinti progetti uno COM ed uno .NET che fungano da wrapper per i due mondi, ottenendo così il massimo dell'usabilità del codice. Ma attenzione a non mettere tutto in un'unica dll!
Altro problema ad usare C++ managed in questi scenari è che C++ richiede la permission SkipVerification, in pratica vuole sempre Full Trust. Il problema non è facilmente aggirabile e richiede un po' di skill sull'argomento.