我正在编写一个 C# 应用程序,它将大小为 30 的空字符串数组传递给 C++ DLL。此字符串数组需要填充到 DLL 中并返回给 C# 应用程序。
在我的代码中,我在 DLL 函数调用结束时观察到内存损坏。
我的 C++ DLL 代码如下:
SAMPLEDLL_API BOOL InitExecution (wchar_t **paszStrings, int count)
{
for (int i = 0 ; i < count; i++)
{
mbstowcs(*(paszStrings + i), "Good",4);
//*(paszStrings + i) = "Good";
}
return TRUE;
}
我的 C# 代码是
string[] names = new[] { "Britto", "Regis" };
if (Wrapper1.InitExecution(ref names, names.Length) == 1)
MessageBox.Show("Passed");
[DllImport("MFCLibrary1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern UInt32 InitExecution(ref string[] Names, int count);