x86 l'eseguibile è completamente supportato sull'host x64. Per esempio. qualsiasi EXE compilato in modalità a 32 bit verrà eseguito senza problemi su 32-bit e host 64-bit. Se non sai perché hai bisogno dell'eseguibile a 64 bit, probabilmente no, quindi l'eseguibile a 32 bit da solo sarà sufficiente.
Tuttavia, con DLL è una questione diversa. L'architettura della DLL (32 bit o 64 bit) deve corrispondere all'eseguibile in cui verrà utilizzata la DLL. Per esempio. se stai scrivendo un'estensione Explorer per x64 Windows, explorer.exe sarà 64 bit, quindi la tua DLL deve anche essere 64-bit, altrimenti non può essere caricata.
Non è possibile combinare due diverse architetture in una DLL o EXE su Windows. Quindi avrai bisogno di due DLL se devi supportare sia gli host a 32 bit che quelli a 64 bit.
Come per la combinazione di 32-bit e 64-bit in un eseguibile, è possibile farlo con un auto-estrattore a 32 bit che rileverà la piattaforma ed estrarrà/eseguirà l'EXE corretto per la piattaforma corrente. Tuttavia, questo non avrebbe alcun vantaggio reale su due eseguibili. –
@haimg: un EXE a 32 bit può essere eseguito su un sistema Windows a 64 bit solo se è installato il componente WOW64. Nelle prime versioni di Windows a 64 bit, WOW64 era un componente richiesto, ma a partire da Windows Server 2008 R2, WOW64 ora è opzionale, quindi potrebbe essere o non essere installato. –
@ RemyLebeau-TeamB: punto valido. Tuttavia, hai mai visto un vero sistema di produzione con WOW64 disinstallato? Non posso immaginare che al di fuori del regno dei sistemi embedded ... – haimg