Come posso chiamare il codice .NET gestito dal mio codice C ++ non gestito in Windows e viceversa?
Domanda
Ho un'applicazione C ++ pura sviluppata usando VC 6.0. Vorrei che questa applicazione facesse uso di una libreria sviluppata in C #. Come posso chiamare i metodi nella libreria C # dal mio eseguibile nativo? Non voglio convertire la mia applicazione nativa C ++ non gestita in codice gestito. Allo stesso modo, come posso fare il contrario? PInvoke è l'unica opzione? Gradirei qualsiasi riferimento o suggerimento per lo stesso.
Soluzione
Per chiamare il codice gestito da C ++ non gestito, utilizzare ClrCreateManagedInstance o esportare i tipi nell'assieme gestito come visibile COM e utilizzare COM. Per chiamare il codice non gestito da gestito, utilizzare COM o P / Invoke.
Altri suggerimenti
La linea principale di Microsoft su questo è usare l'interoperabilità COM. C'è comunque un'altra opzione, a volte indicata come & Quot; Reverse P / Invoke & Quot; c'è un interessante post sul blog qui e alcuni altri qui
Inoltre, se hai Delphi.NET (ora defunto) questa lingua ti consente di esportare metodi statici come faresti con qualsiasi funzione dll, quindi puoi chiamare nell'assembly Delphi.NET proprio come una normale Dll nativa.