新闻中心

EEPW首页>测试测量>设计应用> 使用LabVIEW遇到结构体对齐问题

使用LabVIEW遇到结构体对齐问题

作者: 时间:2017-01-05 来源:网络 收藏
在LV和VC的WIN32 DLL之间传递下面结构体
typedef structnpm_axis
{
intaxis_select;
intsv;//初始速度
intv;//驱动速度
//intacc;//直线加速度
//intdec;//直线减速度
intsacc;//s曲线加速区间
intsdec;//s曲线减速区间
inttacc;//加速时间
inttdec;//减速时间
charline_s;//加速模式
int limit_speed;//速度限制
intpos;//绝对
intdis;//增量
int center;
//intspeed;//启动指令
} uAXIS;

结果char下面的数据全都错误。网上查找到了原因是:LV是采用一个字节对齐的方式,也就是说,LV的簇是无缝隙存储的,占用空间的大小就是这个元素占用空间大小之和。而通常DLL中采用的是整形量对齐(与编译器有关)。

可以把char改为int来应付急用。建议参考LV中的CALL DLL.VI的例子。






评论


技术专区

关闭