diff --git a/lib/print/pavo/pavo_ffi.dart b/lib/print/pavo/pavo_ffi.dart index 3b8ec77..6136eec 100644 --- a/lib/print/pavo/pavo_ffi.dart +++ b/lib/print/pavo/pavo_ffi.dart @@ -21,7 +21,7 @@ class PavoApi { _printOneCard = _tryPrintOneCard('PAVO_PrintOneCardW') ?? _tryPrintOneCard('PAVO_PrintOneCard')!; // 布局自检:Dart Struct 按 C ABI 自然对齐,与 C# 版(已实机验证)的 // sizeof 逐一核对;首个 Windows 环境首跑即暴露对齐差异 - assert(sizeOf() == 80, 'HitiCardPrintParameter 布局异常'); + assert(sizeOf() == 88, 'HitiCardPrintParameter 布局异常'); assert(sizeOf() == 32, 'GdiBitmap 布局异常'); assert(sizeOf() == 16, 'HitiHeatingEnergy 布局异常'); assert(sizeOf() == 48, 'HitiSettings 布局异常'); diff --git a/test/pavo_ffi_layout_test.dart b/test/pavo_ffi_layout_test.dart new file mode 100644 index 0000000..f79825c --- /dev/null +++ b/test/pavo_ffi_layout_test.dart @@ -0,0 +1,16 @@ +import 'dart:ffi'; + +import 'package:desktop_plugin/print/pavo/pavo_ffi.dart'; +import 'package:flutter_test/flutter_test.dart'; + +/// Pavo ffi 结构体布局守护:与 C# 实机验证版的 sizeof 逐一核对。 +/// 布局错误在 mac 上跑本测试即红,不必等 Windows 实机。 +/// (HitiCardPrintParameter = 4×uint32 + 8×uint8 + 8×pointer = 24+64 = 88) +void main() { + test('Pavo ffi 结构体布局与 C ABI 一致', () { + expect(sizeOf(), 88); + expect(sizeOf(), 32); + expect(sizeOf(), 16); + expect(sizeOf(), 48); + }); +}