04-04-2021 02:53 AM
一开始自己试了很久,也查询了许多论坛的类似帖子,但还是没有弄懂。事情是这样的,我需要调用一个DLL中的一个函数:
void WINAPI EnumDevice(ULONG scanTimes, PCHAR DevNameFilter, NameDevID* pNameDevIDArry, PULONG pNum);
struct NameDevID
{
UCHAR Name[MAX_PATH];
UCHAR DevID[MAX_PATH];
int Rssi;
};
但需要传入的参数是该结构体所构成的数组,于是我根据网上的教程先用簇装上两个字符串和一个int型,再使用数组包住簇,类似如下这样:
在CLFN里的是这样设置的:
因为我发现教程里的“按值传递”会导致崩溃,所以使用了数组数据指针,但使用这个方法也会报错(error code:1097),而且无论如何也得不到该参数经DLL处理之后传出的值;而其他的参数能得到返回值。
我查了挺多类似帖子,感觉想解决的问题跟我都不太一样。
---------------------------------------------------------------------------------------------
环境:LABVIEW2020 32bit in Windows10 64bit PC
如能解决我的疑惑,感激不尽!
Solved! Go to Solution.
04-04-2021 06:29 PM
象这样复杂的数据结构(array of cluster of multiple items)是很困难的.
我的方法是: 在 LabVIEW 中配置成最方便的,最简单的数据结构, 然后右击 CLFN, 选 Create C File.
用 VC 把这个 C 文件生成一个新的 dll 给 LabVIEW 调用.
用这个 C 文件调用原来的 dll, 把 LabVIEW 中输入的参数转给 dll.