I have the following function in a C++ DLL
extern \"C\" __declspec(dllexport) bool Exist(const char* name)
{
//if (g_Queues.find(name) != g_Queues.end())
/
I tested your code and it returns false for me. So there must be something else going on.
Are you sure you are recompiling the DLL properly? Try deleting the .DLL and doing a rebuild.
Other than that everything seems to be fine assuming . By default the marshalling will handle the .NET string to const char* without having to decorate it with Marshal attributes, whether the DLL is compiled as ANSI or Unicode.
See http://msdn.microsoft.com/en-us/library/s9ts558h.aspx#cpcondefaultmarshalingforstringsanchor5