Labview调用C++ dll之字符串数组传递

时间:2024-03-19 08:14:32

做项目的时候碰到了一个需求,有一个复杂的运算,用labview实现非常的麻烦,但是如果用C++实现,就会灵活很多。尝试着采用Labview调用C++编写的动态链接库方式解决,兼顾Labview的便利和C++的灵活性。
运算好说,主要难点是Labview与C++之间的数据对应关系,因为我最后的结果是既有字符串又有数字,对于单纯的数字来说,直接通过调用数组的方式就能解决,这里主要记录一下字符串数组的传递过程。
一开始我也是一心想着怎么实现字符串数组的传递,直到那天无意看到Labview LabSQL模块里有一个对字符串分割的过程才恍然大悟,我为什么一定要纠结去实现字符串数组的传递,只要把字符串传递过来,再对字符串进行分割不就完事了么。把问题从字符串数组传递转换为字符串的传递问题就简单多了。
(1)C++编写dll文件
这个过程没什么难度,创建dll工程,配置好相应接口就行,不过在这里为了谨慎起见,我对从labview传递进来的数组进行了一个初始化过程,保证现实的字符串不会出现乱码的情况。
Labview调用C++ dll之字符串数组传递
(2)Labview调用dll文件
打开Labview->互连接口->库与可执行程序->调用库函数,双击,选择调用的dll和函数
Labview调用C++ dll之字符串数组传递
函数页面完成后,切换到参数页面,添加三个参数,res返回的是最终输出的字符串的长度,数据类型为有符号32位整型,in是输入的字符串,类型选字符串,字符串格式选c字符串指针,out是最终输出的字符串,类型和in一致。
Labview调用C++ dll之字符串数组传递
配置完成就可以调用了,in传入我们需要的字符串,out为了保证内存的正确使用,我分配了一个长度为255空字符串,程序会调用dll,然后将in的值复制给out,最后对out字符串拆分,得到我们想要的数组,间接实现字符串数组的传递。
Labview调用C++ dll之字符串数组传递
Labview调用C++ dll之字符串数组传递
这里只是举了一个示例,怎么使用就仁者见仁智者见智啦。之前也看过一些解决方案,是先定义了一个结构体,然后再通过指针传递参数,不过这里就这采用最粗暴的方式解决,如果还有什么没考虑到的,本人也是刚接触labview不久,欢迎提出一起讨论。
如果上面还没有描述清楚,我把C++工程和labview工程都打包了,可以点击下面链接下载,开发环境VS2010+Labview2015。
https://download.csdn.net/download/weixin_42266753/10912753