在我的 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();
根据我在网上找到的信息,有时当与删除一起使用的新版本(调试或发布等)之间存在不一致时,会出现此消息。但我不确定这是否是我的情况。所以我不确定是什么原因造成的。也许 MashallAs 可能与此有关?
有任何想法吗?
谢谢!