Linux 64 linked, but I get a compression error trying to run it. Wrong zlib maybe? Not sure how to check which one it is using. Or I have some 64 bit problem with the file loading code itself that bothers linux and not windows.
Are you saving and loading "long" variables anywhere? If so, that's going to cause major problems on Linux and Mac, because while "long" is 32 bits wide on Windows x86_64, it is 64 bits wide on Linux/OSX x86_64. You might need to go through and change them all to "int".
I'd actually suggest using "#include <cstdint>" and gaining the "sized" integer types - std::{u,}int{8,16,32,64,ptr}_t. Those will always be a specific size. If you need to cast a pointer to an integer, the _only_ types the C/C++ standards guarantee anything about are intptr_t and uintptr_t, so there's that as well.
Various codebases - such as the Linux kernel - use explicitly sized integers, though often under typedefs such as {u,i}{8,16,32,64} rather than the stdint.h/cstdint names, for the sake of concision.
(Well, they also guarantee that sizeof(long long) is at-least sizeof(void*), but they notably do _not_ specify that casts from the latter to the former are permitted, while they do specify that for the {u,}intptr_t types.)