chamando a função não gerenciada char retorna char *

Eu tenho uma função no código C / C ++ não gerenciado (DLL) que retorna uma estrutura que contém uma matriz de caracteres. Eu criei C # struct para receber esse valor de retorno após chamar a função. E depois de chamar essa função, recebo 'System.Runtime.InteropServices.MarshalDirectiveException'

Esta é a declaração C:

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

SAMPLE_STRUCT sampleFunction( SAMPLE_STRUCT ss );

Esta é a declaração C #:

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

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

}

Estou usando ASCII de 1 byte.

Alguém tem uma dica ou solução sobre como fazer isso?