返回信息流在exe里面是20,在调用得dll里面是17
应该是对齐得问题,这个需要改什么编译条件??
在dll里面用stat取文件信息,结果大小和时间都是0,感觉也是有偏移
文件大小应该是689861,但是st_size却是0,而st_blksize是文件大小
$1 = {st_dev = 2063, __pad1 = 0, st_ino = 2376597504, st_mode = 2176843785,
st_nlink = 65536, st_uid = 65536000, st_gid = 65536000, st_rdev = 0,
__pad2 = 0, st_size = 0, st_blksize = 689861, st_blocks = 4096, st_atim = {
tv_sec = 1360, tv_nsec = 1239929747}, st_mtim = {tv_sec = 0,
tv_nsec = 1239929747}, st_ctim = {tv_sec = 0, tv_nsec = 1239929747},
__unused4 = 0, __unused5 = 0}
ps 这个类不是自己定义的,源代码也无法修改
ps2 用的code blocks
这是一条镜像帖。来源:北邮人论坛 / soft-design / #33745同步于 2009/4/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
一个string类型得结构在exe和dll里面sizeof大小不一样怎么解决
DarkIce
2009/4/16镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
在头文件加了,4字节对齐,没效果
【 在 FadeToBlack (Patz) 的大作中提到: 】
: #pragma pack () /*取消指定对齐,恢复缺省对齐*/
: 指定对齐值:#pragma pack (value)
: 试试这个
: ...................
一个项目里面的
配置文件也没发现有这方面的不同,所以很郁闷
【 在 ericyosho (ericyosho) 的大作中提到: 】
: 我咋怀疑是你编译dll 的编译器版本和编译你代码的编译器版本不同造成的捏?
同一个workspace下的2个project
相同环境和编译器
【 在 ericyosho (ericyosho) 的大作中提到: 】
: 啥叫一个项目里面的?
: 项目是指同一个开发环境,同一个编译器的同一个project么?还是指这套东西是你们要做的同一个任务里面的?
对齐的话为什么会出现17?对齐值应为2的幂次才对吧?
-fpack-struct[=n]
Without a value specified, pack all structure members together without holes. When a value is specified (which must be a small power of two),
pack structure members according to this value, representing the maximum alignment (that is, objects with default alignment requirements larger than this will be output potentially unaligned at the next fitting location.
Warning: the -fpack-struct switch causes GCC to generate code that is not binary compatible with code generated without that switch. Additionally, it makes the code suboptimal. Use it to conform to a non-default application binary interface.