DLL调用其参数为结构体,是否有简化的方法

2019-07-17 22:11发布

各位大侠好:
有一个DLL需要调用,但是其中一个参数为结构体,里面有一个一维数组,比较大,想问一下,怎么做才能简单设置这个参数?
调用界面
2016-08-26_144603.jpg
lpDeviceInfo参数写成簇,里面有个48个元素的数组sSerialNumber,得一个个添加
2016-08-26_144700.jpg
请问有没有什么简单点的方法,操作。因为还有些函数里面的参数含254个元素的,那岂不是死翘翘了?
附:C的结构体
struct{  BYTE     sSerialNumber[SERIALNO_LEN];  BYTE     byAlARMInPortNum;  BYTE     byAlarmOutPortNum;  BYTE     byDiskNum;  BYTE     byDVRType;  BYTE     byChanNum;  BYTE     byStartChan;  BYTE     byAudioChanNum;........}NET_DVR_DEVICEIF,*LPNET_DVR_DEVICEIF;



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
ShuiMoLise
1楼-- · 2019-07-17 22:23
 精彩回答 2  元偷偷看……
ken0137
2楼-- · 2019-07-18 04:15
ShuiMoLise 发表于 2016-8-27 08:29
LabVIEW簇里面的数组不用一个一个手工填数字,你用for循环创建一个数组然后把值传给簇里面的数组应该也是可以的(这里簇要用控件,不能用常量)。

那个我尝试了,簇使用控件和常量,单独情况下输出簇都是正常的
2016-08-28_091029.jpg 2016-08-28_091054.jpg
输出簇
2016-08-28_091128.jpg
但是连接上DLL函数,则LV主程序显示出错,如下图显示
2016-08-28_091637.jpg
2016-08-28_091555.jpg
C的结构体
中 sSerialNumber[SERIALNO_LEN];设置成数组的话就有问题了
ShuiMoLise
3楼-- · 2019-07-18 07:07
ken0137 发表于 2016-8-28 09:18
那个我尝试了,簇使用控件和常量,单独情况下输出簇都是正常的

输出簇

你一个一个甜数字正常吗,要是正常的话。那就是我错了。
ken0137
4楼-- · 2019-07-18 11:53

这个就是正常的,是不是和dll调用中参数sSerialNumber[SERIALNO_LEN];有关系?
270321141
5楼-- · 2019-07-18 11:59
ken0137 发表于 2016-8-29 09:22
这个就是正常的,是不是和dll调用中参数sSerialNumber[SERIALNO_LEN];有关系?

目前应该没有更好的办法  因为簇与结构体涉及到了字节对齐的问题
有一个思路
1. 将dll用文本编程语言重新进行封装成为LABVIEW好调用的格式

一周热门 更多>