请问如何将c++ dll中的 char **用c#来改写
一般情况下 c+=中的*指针,可以用c#中的ref
比如,c++的字符串指针 char *name[12],是12个char型指针,
void getname( char **name )
{
}
那么在c#中,如何声明这样的函数?
------解决方案--------------------private void getname(Intptr name)
{
}
------解决方案--------------------往c传参很容易,直接传string[]就行了
------解决方案-------------------- stirng *s="kkkkkk";
调用:
getname(s);
------解决方案--------------------不能用string[],数组只能支持结构体数组,string是类,不是结构体。
这里因为是二级指针,因此用byte[]替代最佳:
[DllImport("<Unknown>", EntryPoint="getname")]
public static extern void getname(byte[] name) ;
如果要转换到字符串,用Encoding类尝试即可。
------解决方案--------------------char**相当于C#里面的char[][]。
------解决方案--------------------可以使用string[],至于传出时数组为空的问题,应该在函数参数定义处添加[Out]特性
void getname( char **name )
在C#中应为
[DllImport("dll", EntryPoint="getname")]
public static extern void getname([MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr), Out()]string[] name);