我有一个函数,从C++中的库中调用,已导入到C#项目
我认为它要求指向数组的指针.但我不知道如何让它发挥作用.
这就是它所要求的 function(float*, float*);
但如果我做的事情
float[] f = {};
float[] f1 = {};
function(f,f1);
Run Code Online (Sandbox Code Playgroud)
它说有无效的论点.
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)
您还需要将程序集标记为不安全(在项目属性>构建选项卡>允许不安全代码复选框中)。
| 归档时间: |
|
| 查看次数: |
5394 次 |
| 最近记录: |