Am Sun, 15 Dec 2013 01:10:18 +0100 schrieb "Stephen Jones" <siwe...@gmail.com>:
> I would assume, and please tell me if I am wrong as that is the > point of the post, that any D code will compile on any dmd > compiler irrespective of whether 32 or 64 bit. But I would have > thought the object files compiled would be different, assuming > that the compiler knowing its environment stipulates in the > object files what the linker needs to do. Or am I wrong on this, > and that the object files will be identical but the linker sc.ini > defines will make the difference. […] The object files are different, possibly even the way arguments are passed to functions. But most importantly pointer variables, "size_t" (used for array lengths etc.) and CPU registers have a different size. For that and other reasons you could not mix 32-bit and 64-bit code by loading a 64-bit DLL into a 32-bit program or linking together different format object files. I don't know if the linker needs to be told -m32 or -m64 or if it is smart enough to figure it out from the object files, but would otherwise generate an error about incompatible object file formats. > Also, what is the deal with using dlls from a 32bit system on a > 64bit os; is this just backwards compatibility? Basically yes. > Any help or helpful links appreciated. -- Marco