LabView 中的 Native Vector<Double> 作为 Argument/Return
Native Vector<Double> in LabView as an Argument/Return
我正在为 C++ DLL 制作包装器。在函数中我需要return一个vector<double>
。我研究了文件,读到我们只能 return int
和 string
。对于 returning 任何其他变量,我们需要将其作为参数传递。但是可用的变量类型是Numeric
、String
、Array
。那么如何从 LabView 中的本机函数中获取 vector<double>
。
在C++中vector被存储为数组,如果v是vector <double>
第一个元素地址是&v[0]
。在 LabVIEW CLFN 节点中,您可以通过指针或句柄传递数组。所以,你有 3 个解决方案:
- 将一个预先分配的数组(通过指针)传递到您的DLL中,填写它,它将在CLFN执行完成后可用。
- 通过句柄将一个数组传递给CLFN,通过LabVIEW内存管理器调整大小,CLFN执行完成后数组内容可用
- 如果数组真的很大(100 MB),并且您确实必须在 C++ 代码中使用 std:vector,我建议您基于 LabVIEW 内存管理器定义您自己的分配器以避免复制。
我正在为 C++ DLL 制作包装器。在函数中我需要return一个vector<double>
。我研究了文件,读到我们只能 return int
和 string
。对于 returning 任何其他变量,我们需要将其作为参数传递。但是可用的变量类型是Numeric
、String
、Array
。那么如何从 LabView 中的本机函数中获取 vector<double>
。
在C++中vector被存储为数组,如果v是vector <double>
第一个元素地址是&v[0]
。在 LabVIEW CLFN 节点中,您可以通过指针或句柄传递数组。所以,你有 3 个解决方案:
- 将一个预先分配的数组(通过指针)传递到您的DLL中,填写它,它将在CLFN执行完成后可用。
- 通过句柄将一个数组传递给CLFN,通过LabVIEW内存管理器调整大小,CLFN执行完成后数组内容可用
- 如果数组真的很大(100 MB),并且您确实必须在 C++ 代码中使用 std:vector,我建议您基于 LabVIEW 内存管理器定义您自己的分配器以避免复制。