C#调用DLL,参数是指针,怎么做?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#调用DLL,参数是指针,怎么做?相关的知识,希望对你有一定的参考价值。
参考技术A [DllImport(@"xxx.dll",EntryPoint
=
"KMeans",
CharSet
=
CharSet.Auto)]
public
static
extern
void
KMeans(
[MarshalAs(UnmanagedType.LPArray,
SizeParamIndex
=
3)]
double[]
rawdata,
//KMeans原始数据
int
rows,
//数据点个数
int
K,
//聚类个数
int
size);
//表示第一个参数的长度
上面是从我自己的一段正确可执行的代码中取出来的一段代码(我的代码是通过C#调用C++写的一个算法程序)。‘KMeans原始数据’对应的C++函数参数就是一个指针。
在C#中通过PInvoke技术调用C/C++的代码的时候,在C#这边是使用数组类型来实现。并且要加上[MarshalAs(UnmanagedType.LPArray,
SizeParamIndex
=
3)],SizeParamIndex参数是指定这个数组(在C#中)或指针对应的存储空间(在C/C++中)的长度。
以上是关于C#调用DLL,参数是指针,怎么做?的主要内容,如果未能解决你的问题,请参考以下文章
c#调用c++的DLL,接口函数参数有函数指针,在线等解决办法