Come posso chiamare il codice .NET gestito dal mio codice C ++ non gestito in Windows e viceversa?

StackOverflow https://stackoverflow.com/questions/1046499

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top