网站建设公司86215河南专业网站建设开发团队
news/
2025/9/23 10:53:08/
文章来源:
网站建设公司86215,河南专业网站建设开发团队,dw做网站步骤,江苏省住房城乡建设部网站LabVIEW 中调用动态库接口时#xff0c;如果是值传递的结构体#xff0c;可以根据字段拆解为多个参数#xff1b;如果参数为结构体指针#xff0c;可用簇#xff08;Cluster#xff09;来匹配#xff0c;其内存连续相当于单字节对齐。
1.值传递
接口定义#xff1a; …LabVIEW 中调用动态库接口时如果是值传递的结构体可以根据字段拆解为多个参数如果参数为结构体指针可用簇Cluster来匹配其内存连续相当于单字节对齐。
1.值传递
接口定义
typedef struct {int a;int b;
} DataA;void testData1(DataA data, int* a, int* b) {*a data.a;*b data.b;
}
LabVIEW 函数原型 LabVIEW 程序框图 2.指针传递
指针参数可作为输入和输出。接口定义
typedef struct {int a;int b;
} DataA;void testData2(DataA *data, int* a, int* b) {*a data-a;*b data-b;data-a *b;data-b *a;
}
LabVIEW 函数原型 LabVIEW 程序框图 3.字节对齐问题
LabVIEW 中簇是内存连续的相当于单字节对齐如果动态库的结构体不是单字节对齐那就要在簇中补齐。接口定义
#pragma pack(4)
typedef struct {int a;char b;int c;
} DataB;
#pragma pack()void testData3(DataB* data, int* a, char* b , int *c) {*a data-a;*b data-b;*c data-c;
}
LabVIEW 函数原型 未补齐数值有问题 字节补齐后结果正常 4.复杂结构体
以包含字节数组和嵌套结构体为例数组和结构体成员都可以当作内部组合了另一个簇。接口定义
typedef struct {int c;int d;
} DataSub;typedef struct {int a;char b[20];DataSub sub;
} DataC;void testData4(DataC* data) {data-a 123;char arr[] COVID-19;memcpy(data-b, arr, sizeof(arr));data-sub.c 2019;data-sub.d 2022;
}
LabVIEW 函数原型 LabVIEW 程序框图 运行结果 要注意的就是【数组至簇转换】Array to Cluster要自己指定大小右键菜单默认 9最大 256 个元素。
5.用字节数组传递结构体
对于大于 256 个元素的数组没找到比较简单的转换成簇的方式LabVIEW 有点反直觉的地方就是数组连到簇里会当作指针索性我直接把接口按字节数组传递。LabVIEW 用的大端PC 上一般小端所以字节和数值转换要翻转一下。接口定义
typedef struct {int len;char arr[1000];
} DataD;void testData5(DataD* data) {char info[] Hello world!;data-len sizeof(info);memcpy(data-arr, info, data-len);
}
LabVIEW 函数原型 LabVIEW 程序框图 运行结果
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912283.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!