Pasar objetos entre la biblioteca C # y C ++ (CLR)

Cómo pasar objetos de la biblioteca de C # a C ++.

Puedo llamar a una función que devuelve void o int sin ningún problema.

Ahora considere la siguiente función en C #,

 List CSharpFunction(string Input) 

donde mi clase de C # contiene,

 public class CSharpClass { string mystring = string.Empty; byte[] bytearray = null; public byte[] bytearray { get { return bytearray ; } set { bytearray = value; } } public string mystring { get { return mystring ; } set { mystring = value; } } } 

Ahora, quiero usar esta lista en mi C ++. Así que he creado,

  typedef std::vector MyDetailList; 

¿Es el camino correcto? Si no es lo que necesito usar en C ++?

Si desea llamar a un dll de C # desde el código de C ++, puede seguir este artículo . En pocas palabras, vas a tener que:
– Escribe una DLL administrada que contenga tu CSharpClass
– Registre la DLL administrada para usar con COM o con C ++ nativo
– Llame a la DLL administrada desde el código nativo de C ++

Esta pregunta SO también es relevante y contiene soluciones alternativas si desea evitar el uso de COM


Respuesta errónea inicial:

Puede consultar este artículo para un tutorial bastante bueno. En pocas palabras, vas a tener que:
– Comstack un dll desde tu código c ++
– marshall (“traducir”) su clase entre C # y C ++
– cargue la dll desde C #, usando la statement DllImport
– llamar al método importado