我熟悉编写DLL文件,可以在LabVIEW中调用,但我很好奇,什么正确的方式IMAQ图像传递到DLL可能。以下是我发现的一种方法 - 我也使用类似的机制将IMAQ Image实例从我的DLL发布到事件结构。的LabVIEW,C++ DLL,和IMAQ图像
注意的是,图像实例转换到/从集群节点位于${LABVIEW_INSTALL_DIR}/vi.lib/vision/DatatypeConversion.llb
,并分别命名为IMAQ Image Datatype to Image Cluster.vi
和IMAQ Image Cluster to Image Datatype.vi
。创建的群集包含映像名称和一个整数值,该值表示指向C/C++中Image*
类型的指针地址。
这是做到这一点的最好办法,还是有更好的办法?
我能看到的一个问题是转换节点正在给U32。如果你在64位可能会有问题... – CharlesB 2012-02-16 16:02:45
是的,我注意到 - 这是因为我将函数调用的参数定义为一个“指针大小的整数”函数。由于我在32位环境下运行,这并不直接影响我 - 它很好奇,尽管32位输出正好如此,因为我运行的是NI Vision 2011,它自称有64位支持。看上面的集群输出,这似乎并不完全是真的...... – hatboyzero 2012-02-16 16:41:46
好吧,我很确定,在64位环境中,它提供了一个64位指针 – CharlesB 2012-02-16 16:47:47