所以我在C ++库中有一个函数:
double MyFunc(double** data, int length)
{
//data elements are accessed like this
(*data)[i] = 5.0;
}
在C#中,我以这种方式访问此功能:
//import
[DllImport(@"MYDLL.dll")]
public static extern double MyFunc(ref double[] data, int length);
//usage
MyFunc(ref data, data.Length);
这很愚蠢,因为我宁愿写:
double MyFunc(double* data, int length)
{
//data elements are accessed like this
data[i] = 5.0;
}
问题是,我不知道如何从C#访问所需的C ++函数......我不太精通Marshaling的价值......我怎么能这样做?
答案 0 :(得分:1)
您可以直接传递double[]
。
答案 1 :(得分:1)
如果您正在询问如何在c#
中创建相同功能,那么您在C#check this和{{}中询问unsafe
代码3}}
您的代码将是:
unsafe double MyFunc(double* data, int length)
{
//data elements are accessed like this
data[i] = 5.0;
}