calling función no administrada char devuelve char *

Tengo una función en código C / C ++ no administrado (dll) que devuelve una estructura que contiene una matriz de caracteres. Creé C # struct para recibir este valor de retorno uppon llamando a la función. Y al llamar a esta función, obtengo 'System.Runtime.InteropServices.MarshalDirectiveException'

Esta es la declaración C:

typedef struct T_SAMPLE_STRUCT {
int num;
char text[20];
} SAMPLE_STRUCT;

SAMPLE_STRUCT sampleFunction( SAMPLE_STRUCT ss );

Esta es la declaración de C #:

struct SAMPLE_STRUCT
{
    public int num;
    public string text;
}

class Dllwrapper
{
    [DllImport("samplecdll.dll")]
    public static extern SAMPLE_STRUCT sampleFunction(SAMPLE_STRUCT ss);

}

Estoy usando ASCII de 1 byte.

Alguien tiene una pista o una solución sobre cómo hacer esto?