在 C# 中使用需要指针作为参数的 DLL 函数,我是否正确声明了它?
Using a DLL function in C# that requires a pointer as argument, am I declaring this properly?
我正在用 C# 开发应用程序,必须从 DLL 调用外部函数。此函数需要一个指向整数数组的指针作为参数。 DLL 文档声明整数数组必须有 >= 4kb space 分配。我知道 C# 会避开指针,但我很确定我在这里别无选择,不是吗?在 C# 中,如何分配指向整数数组的指针并保证其大小 >= 4kb?
我有:
public readonly unsafe int*[] dataBuffer = new int*[1000];
但我不确定这是否正确。
方法签名是
int DataRec(void* buf);
这是一个非常简单的案例,您只需要一个指向数组的指针,而不是一个指针数组(如您声明的那样)。
这应该有效:
byte[] buf = new byte[4096]; // allocate managed buffer
fixed (int* p = &buf[0]) // create a fixed pointer to the first element of the buffer (= to the buffer itself)
{
int result = DataRec(p);
// ...
// use the data
}
我正在用 C# 开发应用程序,必须从 DLL 调用外部函数。此函数需要一个指向整数数组的指针作为参数。 DLL 文档声明整数数组必须有 >= 4kb space 分配。我知道 C# 会避开指针,但我很确定我在这里别无选择,不是吗?在 C# 中,如何分配指向整数数组的指针并保证其大小 >= 4kb?
我有:
public readonly unsafe int*[] dataBuffer = new int*[1000];
但我不确定这是否正确。
方法签名是
int DataRec(void* buf);
这是一个非常简单的案例,您只需要一个指向数组的指针,而不是一个指针数组(如您声明的那样)。
这应该有效:
byte[] buf = new byte[4096]; // allocate managed buffer
fixed (int* p = &buf[0]) // create a fixed pointer to the first element of the buffer (= to the buffer itself)
{
int result = DataRec(p);
// ...
// use the data
}