我无法弄清楚我的代码有什么问题。这用于从我的非托管 C++ 代码创建数组 fontNames,然后在 C# 中检索该数组。C# 代码只输出一个空白字符串数组。(这对于我使用相同方法的其他整数数组来说不是问题)。
请注意此处 exportFontNames 输出的字体名称数组在 C++ 中工作正常(打印正常)。
unsigned int fontNamesCount = 0;
const char ** unmanagedFontNames = o.exportFontNames(fontNamesCount);
array<String^>^ fontNames = gcnew array<String^>(fontNamesCount);
for (unsigned int i = 0; i < fontNamesCount; i++)
{
fontNames[i] = gcnew String(unmanagedFontNames[i]);
delete [] unmanagedFontNames[i];
}
delete [] unmanagedFontNames;
任何人都可以看到结果字符串数组不包含任何内容的原因吗?据我了解, gcnew String 的构造函数应该复制非托管 char 数组,因此删除不应该影响它(删除删除没有区别)。我难住了。