从LabVIEW数组获取内存地址

时间:2018-08-01 09:25:28

标签: c memory-address labview

我用Visual Studio编写了一个C ++ DLL,并添加了一个C包装程序以在多种语言(C ++,Python,LabVIEW等)上使用它。在这一本书中,我要处理图像,即2D阵列。我使用LabVIEW工具创建了一个labview库,因此将该库附加到了我的项目中。

首先,为DLL分配和释放句柄的函数正常工作,因此通信似乎还可以。 而且,我的DLL函数将图像的第一个像素上的指针作为参数,因此将制表符的第一个值作为指针,以重新创建矩阵(库OpenCV)来执行某些操作。

但是我不知道如何在LabVIEW中获取数组的内存地址,并且互联网上的不同帖子也不总是很清楚。

这是C函数:

__declspec(dllimport) unsigned short* __stdcall imAdjustBrightness(void* handle, void * ptrImg, int width, int height, int inputType, int brightnessValue)
{
    if (handle)
    {
        EpsImageProcessing* data = (EpsImageProcessing*)handle;
        return data->imAdjustBrightness(ptrImg, width, height, inputType, brightnessValue);
    }
    return NULL;
}

以及VI的屏幕截图:

main VI library function

在此先感谢您的任何建议/帮助。

2 个答案:

答案 0 :(得分:0)

如果您需要传递指向Labview数组的指针,则可以按以下方式配置“调用库函数”节点:

  1. 在“参数”选项卡上,选择您感兴趣的参数 在
  2. 在右侧面板的“类型”中选择“适应类型” 下拉
  3. 在“数据格式”下拉菜单中选择“数组数据指针”

此设置应传递一个指向数组第一个元素的指针。

呼叫库功能节点的选项记录在here

答案 1 :(得分:0)

您可以使用MoveBlock LabVIEW函数。

这里是link,来自NI论坛。