新聞中心

EEPW首頁 > 測試測量 > 設計應用 > 使用LabVIEW遇到結構體對齊問題

使用LabVIEW遇到結構體對齊問題

作者: 時間:2017-01-05 來源:網(wǎng)絡 收藏
在LV和VC的WIN32 DLL之間傳遞下面結構體。
typedef struct npm_axis
{
int axis_select;
int sv;//初始速度
int v;//驅(qū)動速度
//int acc;//直線加速度
//int dec;//直線減速度
int sacc;//s曲線加速區(qū)間
int sdec;//s曲線減速區(qū)間
int tacc;//加速時間
int tdec;//減速時間
char line_s;//加速模式
int limit_speed;//速度限制
int pos;//絕對
int dis; //增量
int center;
//int speed;//啟動指令
} uAXIS;

結果char下面的數(shù)據(jù)全都錯誤。網(wǎng)上查找到了原因是:LV是采用一個字節(jié)對齊的方式,也就是說,LV的簇是無縫隙存儲的,占用空間的大小就是這個元素占用空間大小之和。而通常DLL中采用的是整形量對齊(與編譯器有關)。

可以把char改為int來應付急用。建議參考LV中的CALL DLL.VI的例子。






評論


技術專區(qū)

關閉