C#类型代表什么是C++ float*?

use*_*152 5 c#

我有一个函数,从C++中的库中调用,已导入到C#项目

我认为它要求指向数组的指针.但我不知道如何让它发挥作用.

这就是它所要求的 function(float*, float*);

但如果我做的事情

float[] f = {};
float[] f1 = {};

function(f,f1);
Run Code Online (Sandbox Code Playgroud)

它说有无效的论点.

Tri*_*nko 4

float * 是 C# 中的浮点指针类型。

如果函数需要浮点指针参数 (float *),则必须假定该函数可以处理指针,可能涉及指针算术。因此,保留该签名非常重要。

要将 C# 中的浮点数组作为浮点指针 (float*) 传递,您需要将数组固定/固定在不安全上下文中的内存中,以获取指向它们的指针,您可以将其传递给函数以保留其功能:

unsafe
{
    fixed (float* ptr_f = f) //or equivalently "... = &f[0]" address of f[0]
    fixed (float* ptr_f2 = f2) //or equivalently "... = &f2[0]" address of f2[0]
    {
        function( ptr_f, ptr_f2 );
    }
}
Run Code Online (Sandbox Code Playgroud)

您还需要将程序集标记为不安全(在项目属性>构建选项卡>允许不安全代码复选框中)。