大哥!!  大姐 !
小弟我 有 的 调用外部DLL 的 一个 方法 不知道 如何接收 例子:[DLLImport("ABCD.dll")]
public static unsafe extern int Read(char* asd) 注意 这个 asd 是 输出的 返回的 是 ‘|’分开的 字符串
如何接收 他 
我是 char [] a=new char[1000];fixed (char* cc=&a[0])
{
   Read(cc);
}
得到的 是 乱码 !! 不知道为什么??能告诉我吗 ??
 

解决方案 »

  1.   

    你可以用StringBuilder,
    [DllImport("ABCD.dll", CharSet=CharSet.Ansi)]
    public static extern int Read(StringBuilder asd);//...{
      StringBuilder asd = new StringBuilder(10 * 1024);   // 你们约定的大小
      string[] toks = asd.ToString().Split('|');
    }
      

  2.   

    :)
    {
      StringBuilder asd = new StringBuilder( 1024 );   // 你们约定的大小
      Read( asd );
      string[] toks = asd.ToString().Split('|');
    }
      

  3.   

    可以用楼上的方法。如果非得用unsafe代码,记住,C++的char在c#中要用byte
      

  4.   

    回传的 字符串大小不知道 是 多大呀 ~~而且 char* 能用别的 方法 吗??
    给我 的 文档中 参数是 Char* 能用 别的 类型代替吗 ??
      

  5.   

    文档中用了char*,等于那边是定了,你这边就只能按楼上的转换了
      

  6.   

    转换 stringBuilder 吗 
      

  7.   

    如果Read(char* asd)里要修改asd的内容,那么在c#中就要用StringBuilder,而且空间要足够大。