2011-09-28 84 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

相關問題