Como faço para retornar corretamente um char * de uma DLL não gerenciada para c #?

Assinatura de função:

char * errMessage(int err);

Meu código:

[DllImport("api.dll")]       
internal static extern char[] errMessage(int err);
...
char[] message = errMessage(err);

Isso retorna um erro:

Cannot marshal 'return value': Invalid managed/unmanaged type combination.

O que estou fazendo de errado? Obrigado por qualquer ajuda.

questionAnswers(5)

yourAnswerToTheQuestion