fixed type size compatibility probolem, under gcc 64bits compiler, the "long" takes 8 bytes, but 4 bytes on windows