x86 und x64 build

FSA

Erfahrenes Mitglied
Hallo.
Die Frage mag zwar ein wenig trivial sein, aber ich beschäftige mich seit längerem mit ihr.

In Visual Studio kann man einstellen, ob man x86 oder x64 erstellen möchte. Mein Frage nun: Was bringt es, wenn ich alles nochmal als x64 erstelle? Und kann man beides in eine DLL/EXE zusammenfassen und das Programm entscheiden lassen?
 
Hallo MSVCplusplus

Nein, du kannst nicht beides in einem haben. Grund dafür ist, dass ein 64-Bit-Programm eben eine 64-Bit Architektur verwendet und daher nicht vereinbar ist mit der 32-Bit Architektur.

Das beginnt zum Beispiel damit, dass in einem 64-Bit kompilierten Programm alle Pointertypen 64 Bit (also 8 Byte) gross sind. sizeof(int*) gibt also nicht mehr 4 sondern 8.

Grüsse
Cromon
 
Und was es bringt:
(Nun, 64bit-Programme, mit allen Vor- und Nachteilen :D)

Für viele kleinere "Normal"-Programme ist es zurzeit nicht unbedingt wichtig,
auch als 64bit-Version verfügbar zu sein,
da am 64-Computer mit 64-OS auch 32-Programme ausgeführt werden können
(ja, bei den handelsüblichen PCs&Co., nicht generell)

Bei zB. Treibern (ziemlich jedem HW-nahen und noch einigen anderen Dingen, nur als Beispiel VSS)
ist es allerdings gar nicht egal, weils emuliert einfach nicht funktionieren wird.

Sonst kann eine 64-Version natürlich auch aus Speicher- / Performancegründen interessant sein...
Speicher ist klar, und ein an den Prozessor eher angepasstes Programm kann nur schneller werden.

Frage ist nur immer, ob sich der Aufwand lohnt.
Je nach Programm/Code gehts von "Nur neu kompilieren"
bis "90% neuschreiben und Dateiformate ändern, weil man zuerst nicht an int-Größen gedacht hat".
 
Oh verdammt. Da habe ich bei meinen Dateiformaten nicht dran gedacht. Aber ist unter Windows nicht immer int = 32bit? Egal unter welcher Plattform man das Programm kompiliert
 
Unter Windows stimmt das. Allgemein ist die Länge von Datentypen wie int, long und short aber nicht festgelegt.
Plattform- und Compilerunabhängig sind die Typen (u)intXX_t mit u für unsigned und XX=Anzahl der Bits zu verwenden.
 
Bevor ich da in widerlichem Code refactoring ende oder am Ende schlechten Code schreibe, lasse ich das doch einfach auf 32 Bit. Danke für die Antworten ;)
 
Zurück