【发布时间】:2009-11-10 23:07:06
【问题描述】:
我想从我的 C# 代码中调用这个 C++ 函数:
void GetArrayOfNames(char** names, int nbOfNames);
要在 C++ 中调用它,我只需定义一个 char* 数组:
char* aNames[20];
并在循环中分配每个名称:
for(int i-0; i<20; i++)
{
aNames[i] = new char[50];
}
然后调用:
GetArrayOfNames(aNames, 20);
在我的 C# 代码中,我有:
[DllImport("MyDLL.dll")]
unsafe static extern void GetArrayOfNames(char** ppNames, int nbOfNames);
现在,我该如何分配内存并调用 GetArrayOfNames?另外,有什么方法不必将我的函数声明为“不安全”?
【问题讨论】:
标签: c# marshalling