C # DllImport com função booleana C ++ não retornando corretamente

Eu tenho a seguinte função em uma DLL C ++

extern "C" __declspec(dllexport) bool Exist(const char* name)
{
 //if (g_Queues.find(name) != g_Queues.end())
 // return true;
 //else
 // return false;
 return false;
}

Dentro da minha classe C #, tenho o seguinte:

[DllImport("Whisper.dll", EntryPoint="Exist", CallingConvention=CallingConvention.Cdecl)]
        public static extern bool Exist(string name);

No entanto, sempre que eu chamo minha função, SEMPRE retorna verdadeiro, mesmo quando eu comentei minha pequena função e fiz com que ela retornasse falsa. Tenho a sensação de que há algo errado com minha convenção de chamada ou qualquer outro problema com P / Invocando minha DLL, provavelmente correspondente à string e const char *, mas, por enquanto, estou completamente sem noção. O que estou fazendo errado? Por que ele retorna verdadeiro em vez de falso?

EDITAR: Eu descobri que isso não tem nada a ver com o const char * ou string, porque o problema persiste com uma função vazia. Tentei alterar a convenção de chamada entre Cdecl e StdCall e nem funcionam corretamente. Também consegui depurar minha DLL e ela está sendo chamada corretamente e realmente retorna false, mas uma vez de volta ao C #, de alguma forma, é verdade. Alterar o CharSet também não teve efeito. Certifiquei-me de fornecer ao meu programa C # a versão mais recente e correta da minha DLL a cada vez, para que isso também não seja um problema. Novamente, sou completamente ignorante sobre por que o resultado é verdadeiro quando, na verdade, estou retornando falso.

EDIT2: O SOReader me forneceu uma sugestão que corrige outra questão importante, veja meu comentário. Infelizmente, ele não corrige o problema de retorno.

EDIT3: Concluí que alterar o tipo de retorno Exist (bool) para (int) repentinamente faz com que ele retorne o número correto (true = 1, false = 0). Isso significaria que pode haver um problema entre o bool do C ++ e o bool do C #. Posso continuar usando um int como um bool, mas isso ainda não explica o problema original. Talvez alguém possa me esclarecer sobre isso? Talvez isso tenha a ver com o fato de eu estar usando x64 (embora ambos os projetos sejam compilados como x86)

questionAnswers(7)

yourAnswerToTheQuestion