dll的函数是
char *A(char buf[])
{
        char buffer[50]={};
        return buffer;
}
C#中调用
char [] b =new char[50]{};
[DllImport("dll.dll")]
public static extern char A(char buf);
A(b);怎么把buffer[50]中的数据在C#中读出来

解决方案 »

  1.   

    [DllImport("<Unknown>", EntryPoint="A")]
    public static extern  System.IntPtr A(byte[] buf) ;
      

  2.   

    c++编写的dll中的函数:  
      static char buffer[50];
      char *A(unsigned char buf[])
      {
        for(int i=0;i<50;i++)
        {
          buffer[i]=buf[50];
        }
        return buffer;
    }
    C#中调用:
    byte [] b =new byte[50]{1,1,1,1,1,1,1,1,1};
    [DllImport("dll.dll")]
    public static extern char A(char buf);
    char [50]a; 
    a=A(b);//有问题????怎么把buffer[50]中的数据,赋值给C#中的a数组
      

  3.   

       首先你的C代码就有问题,buffer是一个数组,而数组是保存在栈中的,你函数一返回就平栈了,那么buffer中的值很可能就已经变了。
        第二,C#的函数声明应该是
    [DllImport("dll.dll",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.Cdecl)]
    public static extern IntPtr A(string buf);
    取值用Marshal.PtrToStringAnsi(A(b));
      

  4.   


    我的题目没写清楚
    c++编写的dll中的函数:   
      static char buffer[50];
      char *A(unsigned char buf[])
      {
      for(int i=0;i<50;i++)
      {
      buffer[i]=buf[50];
      }
      return buffer;
    }
    C#中调用:
    byte [] b =new byte[50]{1,1,1,1,1,1,1,1,1};
    [DllImport("dll.dll")]
    public static extern char A(char buf);
    char [50]a;  
    a=A(b);//有问题????怎么把buffer[50]中的数据,赋值给C#中的a数组