Visual Studio 2012 - Target Platform

09/25/2012 19:56 Trollface-#1
Hi Leute,

nach ganzen 2 Jahren bin ich nun von Embarcadero C++ Builder auf Visual Studio 2012 umgestiegen, allerdings gibt es dort ein kleines Problem.

Ich kann mein Code nur in x64 compilieren und habe auch keine möglichkeiten auf x86 zu compilen.
Wenn ich unter dem Konfigurations Manager gehe und eine neue Zielplattform angeben will habe ich nur die Auswahl zwischen ARM, Win32 und x64.

Nun hätte ich gerne die möglichkeit eine .exe zu erstellen die auf beiden Architekturen läuft und habe im Internet etwas recherchiert.
Dabei stieß ich auf die Zielplattform "Anycpu" leider ist diese wie schon erwähnt nirgendswo zu finden.

Nun komme ich langsam ins grubeln und hoffe auf eure hilfe, ich bedanke mich schonmal im vorraus.
09/25/2012 20:52 Ende!#2
AFAIK repräsentiert die AnyCPU-"Architektur" den .NET-Bytecode und ist entsprechend auch nur für .NET-Ziele verfügbar. Es gibt zwar ein .NET C++ (C++/CLI), allerdings rate ich von dessen Nutzung stark ab, da dort so ziemlich alle Vorteile von C++ gegenüber Sprachen wie C# verloren gehen.

Weiterführende Informationen:
[Only registered and activated users can see links. Click Here To Register...]

Edit:
In der Standard-Konfiguration erstellt VC++ x86er Binarys, welche auch auf x64er Systemen laufen.
09/25/2012 21:02 Nightblizard#3
x86 entspricht der Win32 Konfiguration. Die damit erstellen PEs laufen dann auch dank WOW64 auf 64 Bit Betriebssystemen.
09/25/2012 21:11 Trollface-#4
Quote:
Originally Posted by Ende! View Post
AFAIK repräsentiert die AnyCPU-"Architektur" den .NET-Bytecode und ist entsprechend auch nur für .NET-Ziele verfügbar. Es gibt zwar ein .NET C++ (C++/CLI), allerdings rate ich von dessen Nutzung stark ab, da dort so ziemlich alle Vorteile von C++ gegenüber Sprachen wie C# verloren gehen.

Weiterführende Informationen:
[Only registered and activated users can see links. Click Here To Register...]

Edit:
In der Standard-Konfiguration erstellt VC++ x86er Binarys, welche auch auf x64er Systemen laufen.
Danke für den Artikel, kein wunder das ich "Anycpu" nicht finden konnte.
Auf x64 klappt ja auch alles einwandfrei, nur auf 32 Bit Systemen kommt die berüchtigte Meldung "Dies ist keine zuverlässige Win32 anwendung..."

Quote:
Originally Posted by Nightblizard View Post
x86 entspricht der Win32 Konfiguration. Die damit erstellen PEs laufen dann auch dank WOW64 auf 64 Bit Betriebssystemen.
Leider wie schon erwähnt, kommt auf 32 Bit Systemen dann die Meldung, dass die Anwendung nicht gestartet werden konnte.
Ich selber habe 64 Bit wo alles sauber läuft.
09/25/2012 21:34 Ende!#5
Ich habe eben, um dein Problem nachvollziehen zu können, mal mit VS12 (ich selbst arbeite auch damit, verwende aber aus Gründen der Kompatibilität momentan noch den VC++10 Compiler) ein neues "Win32-Konsolenanwendungs"-Projekt erstellt und dieses dann per F7 erstellt. Das generierte Executable verwendet definitiv die x86er Architektur. Sicher, dass du nicht irgendwas in deiner Projektkonfiguration verändert hast?

Projektkonfiguration -> Konfigurationseigenschaften -> Linker -> Erweitert -> Zielcomputer

Überprüfe den Wert mal bitte.
09/26/2012 13:55 Trollface-#6
Quote:
Originally Posted by Ende! View Post
Ich habe eben, um dein Problem nachvollziehen zu können, mal mit VS12 (ich selbst arbeite auch damit, verwende aber aus Gründen der Kompatibilität momentan noch den VC++10 Compiler) ein neues "Win32-Konsolenanwendungs"-Projekt erstellt und dieses dann per F7 erstellt. Das generierte Executable verwendet definitiv die x86er Architektur. Sicher, dass du nicht irgendwas in deiner Projektkonfiguration verändert hast?

Projektkonfiguration -> Konfigurationseigenschaften -> Linker -> Erweitert -> Zielcomputer

Überprüfe den Wert mal bitte.
Ah, super.
Der Zielcomputer stand dort unter x64 habe diesen nun auf x86 geändert und nun funktioniert alles wie ich es wollte.
Ich danke dir.