急!VC头文件可变结构在delphi中的表示以及sizeof值问题
最近使用delphi6.0翻译一套vc编写的软件(调用到第三方VC编写的.dll库),由于第三方库的.h文件存在可变数据结构,如:
typedef struct test_rec
{
int id;
union{
byte u1;
byte *u2;
}f;
}TTestRec;
则在delphi 6.0中可以表示为:
TTestRec = record
id:integer;
case f:Boolean of
true:(u1:byte);
false:(u2:PByte);
end;
VC与Delphi编译器同样在8字节(编译器默认)对齐的设置下,分别使用sizeof函数计算结构的大小,发现:
VC下返回:8
Delphi返回:12
测试过一些其他的可变结构,发现delphi下的sizeof返回值总比vc返回的多4个字节,尽管都是用8字节默认结构对齐设置。
如果这样,可能意味着delphi下的代码无法使用这些转换的可变结构作为参数传入VC写的第三方dll库,肯定存在问题,
不知有高手是否知道如何解决?请指教。
不知道delphi2009/2010等有否解决办法。