В функции в моей C ++ DLL я возвращаю std :: string в мое приложение c #. Это выглядит примерно так:
std::string g_DllName = "MyDLL";
extern "C" THUNDER_API const char* __stdcall GetDLLName()
{
return g_DllName.c_str();
}
Но когда мой код C # вызывает эту функцию, я получаю это сообщение в моем окне вывода:
Invalid Address specified to RtlFreeHeap( 00150000, 0012D8D8 )
Объявление функции в c # выглядит так:
[DllImport("MyDll", EntryPoint = "GetDLLName")]
[return: MarshalAs(UnmanagedType.LPStr)]
public static extern string GetDLLName();
Из того, что я смог найти в Интернете, иногда это сообщение появляется, когда есть несоответствие между тем, какая версия new (отладка или выпуск и т. Д.) Используется с delete. Но я не уверен, что это происходит в моем случае. Так что я не уверен, что именно это вызывает. Может быть, MashallAs может иметь к этому какое-то отношение?
Есть идеи?
Спасибо!