2011-09-28 164 views
0

我正在调用从LabView以C++编写的DLL。函数原型是:如何将类型指针的参数从LabView传递给PVOID?

ULONG DAQ_Open(PVOID *pHandle); 

如何从LabView传递正确的参数?将类型指针的参数传递给从LabView到DLL的指针是不可能的?

+0

如何铸造你的参数'PVOID *'?或者将参数的地址转换为'PVOID *'? –

+0

对不起,但我不明白有什么'void **'而不是'void *'的好处? – GreenScape

+0

@GreenScape,在Windows系统上,资源标识符的实际类型是PVOID。 DAQ_Open函数尝试获取表示某个资源的句柄。由于返回值已被用作错误代码,因此PVOID *是唯一的选择。 – oyquan

回答

1

只要你不希望传递一个指向LabVIEW VI的指针作为回调函数(这是一个单独的,更困难的答案),该参数只是一个指针。当您配置您的调用库节点时,请使用类型“数字”和数据类型“无符号指针大小的整数”,并将“指针指向值”。

这应该给你一个原型:void funcName(uintptr_t * arg1);

+0

它的工作原理!谢谢:) – oyquan

0

你应该在NI网站上搜索'dll指针labview'来获得一个想法。此外,LabVIEW附带一个名为Call DLL.vi的示例,其中提供了有关如何实现此目的的示例。示例VI可以通过导航到帮助 - >查找示例,然后搜索DLL来找到。

Call DLL.vi VI允许您浏览外部代码(C和C++)数据类型的示例以及它们如何与LabVIEW进行交互。每种数据类型都有一个示例VI,演示使用Call Library Function Node。要打开特定数据类型的示例VI,请从左侧列表中选择该数据类型,然后按下“打开当前数据类型的示例VI”按钮。外部代码信息集群中将显示函数原型,函数的源代码以及有关此示例的任何特定详细信息。

+0

嗨,阿德南,谢谢你的回应。 Call DLL.vi中没有LPVOID **等效项。 flndr的方法解决了这个问题。 – oyquan

相关问题