首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教怎么将c++ dll中的 char *用c#来改写

2013-01-20 
请问如何将c++ dll中的 char **用c#来改写一般情况下 c+中的*指针,可以用c#中的ref比如,c++的字符串指针

请问如何将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);

热点排行