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#中调用dll,函数参数带指针,如何改写?

c#调用c++的DLL,接口函数参数有函数指针,在线等解决办法

C#怎么调用C++的dll?

当参数之一是指针数组时,如何从 C# 调用 C++ DLL

C# 调用C++ DLL,而c++函数的有一个参数需要是null,该怎么传递?

C#如何调用C++的DLL的结构体数组指针