【问题标题】:C# Array memory allocationC# 数组内存分配
【发布时间】:2016-08-11 09:45:58
【问题描述】:

我正在使用 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# arrays winforms camera


【解决方案1】:

由于您已经展示了 C# 函数签名,我假设这意味着您或其他人已经为此 C API 编写了 P/Invoke 定义。

鉴于此,您应该可以这样称呼它:

int[] arr = new int[1024];
uint result = Andor_SDK.GetOldestImage(arr, arr.Length);

【讨论】:

  • 我想我已经尝试过这样的事情,但我可能在错误的范围内完成了它,将尽快再次检查
  • 如果我尝试以这种方式获取数组的大小,它会不断抛出:“数组大小不正确”
  • 好吧,是时候深入研究该代码,看看哪里引发了异常。
  • 函数的 uint 结果是一个代码,指的是“数组大小不正确”。仅仅声明和初始化空数组就够了吗?
  • 经过一点排版和尝试,这个古老的经典作品成功了!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多