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

C#程序调用c++的dll,怎的把dll中函数返回的数组赋值给c#程序中的数组

2012-10-23 
C#程序调用c++的dll,怎样把dll中函数返回的数组赋值给c#程序中的数组dll的函数是char *A(char buf[]){char

C#程序调用c++的dll,怎样把dll中函数返回的数组赋值给c#程序中的数组
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#中读出来

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

热点排行