C#数组内存分配
C# Array memory allocation
我正在使用 Andor_SDK(他们提供的相机的 SDK)编写一个 WinForm 应用程序。 SDK 是用几种语言编写的:c++、c#、vb、labview。
我的问题如下:
为了从相机的内存中检索图像,我需要调用一个函数。
c++:
unsigned int WINAPI GetOldestImage(at_32* arr, unsigned long size)
要使用此函数,您需要分配足够大的数组(关于图像大小和它们的数量)并将该指针传递给该函数。在 C++ 中这不是问题
我的问题是我怎样才能做一些在 c# 中有效的类似事情
供参考,在c#中调用的函数是:
uint Andor_SDK.GetOldestImage(int[] arr, uint size)
由于您已经展示了 C# 函数签名,我假设这意味着您或其他人已经为这个 C API.
编写了 P/Invoke 定义
鉴于此,您应该可以这样称呼它:
int[] arr = new int[1024];
uint result = Andor_SDK.GetOldestImage(arr, arr.Length);
我正在使用 Andor_SDK(他们提供的相机的 SDK)编写一个 WinForm 应用程序。 SDK 是用几种语言编写的:c++、c#、vb、labview。 我的问题如下: 为了从相机的内存中检索图像,我需要调用一个函数。
c++:
unsigned int WINAPI GetOldestImage(at_32* arr, unsigned long size)
要使用此函数,您需要分配足够大的数组(关于图像大小和它们的数量)并将该指针传递给该函数。在 C++ 中这不是问题
我的问题是我怎样才能做一些在 c# 中有效的类似事情
供参考,在c#中调用的函数是:
uint Andor_SDK.GetOldestImage(int[] arr, uint size)
由于您已经展示了 C# 函数签名,我假设这意味着您或其他人已经为这个 C API.
编写了 P/Invoke 定义鉴于此,您应该可以这样称呼它:
int[] arr = new int[1024];
uint result = Andor_SDK.GetOldestImage(arr, arr.Length);