Probé cosas diferentes, pero me estoy poniendo loco de interoperabilidad.Paso C# cadena de C++ y C++ pasar resultado (cadena, char * .. lo que sea) a C#
(aquí la palabra cadena no se refiere a un tipo variable pero "una colección de caracteres"): Tengo una función C++ no administrada, definida en un dll, que estoy tratando de acceder desde C#, esta función tiene un parámetro de cadena y un valor de retorno de cadena como este:
string myFunction(string inputString)
{
}
¿Cuál debería ser la cadena en el lado de C++? y C# uno? y qué parámetros necesitan DllImport para esto?
Este es el enfoque correcto. Tenga en cuenta que no tiene que pasar el tamaño del búfer por referencia. El C/C++ debe terminar la cadena, buffer.ToString() produce el valor de retorno. –
Gracias a todos por las respuestas. Leí en alguna parte que StringBuilder se utiliza para la cadena de salida, pero también necesito pasar a la función C++ una cadena de entrada ... ¿qué tipo debo usar? En el lado de C++, he insertado la cadena de caracteres char * y C#, pero no funciona. Finalmente, ¿puedo definir la salida "cadena" (lado C++) como un const char *? O debo tener un char *? – Smjert
@Smjert: Usar un const char * es una buena forma de hacerlo si no lo está cambiando. Esto debería corresponder perfectamente con una cadena en el lado C#. ¿Qué tipo de problemas estás viendo? –