在labview中调用DLL,部分函数出现以下问题,该怎么解决,不太懂上面说的意思

无法创建以下VI。表明相关函数可能包含某些参数,这些参数的数据类型无法直接转换。如要解决此问题,可创建一个自定义控件或自定义类型控件,用来表示复杂结构或多维数组,然后再次运行导入共享库向导,并从共享库中选择更新VI。使用相同的共享库,重新执行向导各步骤。在配置VI和控件页上为相关参数分配自定义控件或自定义类型。复杂结构包括组合结构、包含数组、字符串数组和多维数组的结构。

这是因为labview只支持c语言的数据类型,自己定义的数据类型(如u8,u16等)需要预处理定义。

在预处理定义处添加如下代码试试:

ULONG = unsigned long;VOID = void;LONG = long;UCHAR = unsigned char;PUCHAR = unsigned char*;PULONG = unsigned long*;WINAPI;BOOL = bool;USHORT = unsigned short;PUSHORT = unsigned short*;CHAR = char;

另外你再观察一下你的函数中有没有其他的数据类型,也必须对其进行相应的预处理定义。

追问

您好,这段语句我有加上,应该是我的数据类型里面有复杂结构或多维数组,原谅我是菜鸟,我不知道怎么处理复杂结构或多维数组,有没有关于复杂结构或多维数组的语句或者是处理方式,谢谢你了。

追答

我的这个例程添加完网上的那些定义之后,一开始也是有几个函数无法转换。后来我看了一下我dll对应的头文件。看看哪个函数有问题,发现有些数据类型没有定义,我自己又添加了几个定义。应该不是复制结构体的问题,结构体自动转换为labview中的簇。你还是看一下你不能转换的函数里有没有可能不识别的数据类型,你定义一下看看。

另外,我也是新手。也是前两天做一个dll文件的调用才看这一块的。我遇到的问题就是这样,其他复制问题我还没遇到过。

温馨提示:答案为网友推荐,仅供参考
相似回答