在C#中如果只用指针的话,需要用到unsafe关键字
[DllImport(XXX.dll)]
unsafe private extern static int* 函数名();
unsafe private void 函数名()
{
int* nP = 函数名();
int n = *nP;
nP++;
}
函数名是你DLL中的函数名
通过指针运算符,访问每一个元素,前提是你得知道数组里有多少个元素
如果只有指针在C#中,需要使用unsafe关键字
对我有用[0(XXX.DLL)]
不安全的私有外部静态int *函数名();
不安全的私人void的函数名称()
{
* NP =函数名();
廉政n = * NP的
NP + +;
} BR />函数名是您在DLL中的函数
通过指针操作符来访问每个元素的名称,前提是你必须知道数组中的元素的数量
c# 调用c++ dll 返回值为数组指针
如果c++dll的函数返回值为 数组指针,c#这边我需要怎么定义函数,怎么接收呢?
c++ 原型:
_declspec (dllexport) int* shuju()
C# code
[DllImport("xxxxx.dll")]
public static extern IntPtr shuju();
再使用这个:
Marshal.Copy(IntPtr,Int32[], Int32, Int32)
将数据从非托管内存指针复制到托管Int32数组。
public static void Copy (
IntPtr source,
int[] destination,
int startIndex,
int length
)
然后就和用普通数组一样了
上一个回答的方法也不错
但是面临一个共同的问题,没办法知道数组的长度