如何将指向PVOID的指针类型的参数从LabView传递到DLL? 我用LabVIEW调用C++编写的DLL。功能原型为: ULONG DAQ_Open(PVOID *pHandle);

如何将指向PVOID的指针类型的参数从LabView传递到DLL? 我用LabVIEW调用C++编写的DLL。功能原型为: ULONG DAQ_Open(PVOID *pHandle);,c++,pointers,dll,parameter-passing,labview,C++,Pointers,Dll,Parameter Passing,Labview,如何从LabView传递正确的参数?难道不可能将指针类型的参数从LabView传递到DLL吗?您应该在NI的网站上搜索“DLL指针LabView”以获得想法。另外,LabVIEW附带了一个名为Call DLL.vi的示例,其中有一些示例说明如何实现这一点。可以通过导航到帮助->查找示例,然后搜索DLL来找到示例VI 调用DLL.vi vi允许您浏览外部代码(C和C++)数据类型的示例,以及它们如何与LabVIEW交互。每个数据类型都有一个示例VI,演示调用库函数节点的使用。要打开特定数据类型的示

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

您应该在NI的网站上搜索“DLL指针LabView”以获得想法。另外,LabVIEW附带了一个名为Call DLL.vi的示例,其中有一些示例说明如何实现这一点。可以通过导航到帮助->查找示例,然后搜索DLL来找到示例VI


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

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


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

只要您不希望将指针传递到LabVIEW VI以用作回调(这是一个单独的、更难回答的答案),参数就只是一个指针。配置调用库节点时,请使用类型“numeric”和数据类型“unsigned pointer size integer”并传递“pointer to value”


这将为您提供一个原型:void funcName(uintpttr_t*arg1)

只要您不希望将指针传递到LabVIEW VI以用作回调(这是一个单独的、更难回答的答案),参数就只是一个指针。配置调用库节点时,请使用类型“numeric”和数据类型“unsigned pointer size integer”并传递“pointer to value”


这将为您提供一个原型:void funcName(uintpttr_t*arg1)

有关从LabVIEW调用DLL的其他示例(包括指针、结构、数组等),这里有一篇方便的文章,链接到其他几个深入的示例:

有关从LabVIEW调用DLL的其他示例(包括指针、结构、数组等),这里有一篇方便的文章,链接到其他几个深入的示例:

将参数强制转换为
PVOID*
?或者将参数的地址强制转换为
PVOID*
?很抱歉,我不太明白在Windows系统上使用
void**
而不是
void*
?@GreenScape有什么好处,实际的资源标识符类型是PVOID。DAQ_Open函数尝试获取表示某些资源的句柄。由于返回值已被用作错误代码,所以PVOID*是唯一的选择。将参数强制转换为
PVOID*
?或者将参数的地址强制转换为
PVOID*
?很抱歉,我不太明白在Windows系统上使用
void**
而不是
void*
?@GreenScape有什么好处,实际的资源标识符类型是PVOID。DAQ_Open函数尝试获取表示某些资源的句柄。由于返回值已被用作错误代码,PVOID*是唯一的选择。嗨,Adnan,谢谢你的回复。调用DLL.vi中没有LPVOID**等效项。flndr的方法解决了这个问题。嗨,阿德南,谢谢你的回复。调用DLL.vi中没有LPVOID**等效项。flndr的方法解决了这个问题。