Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Sveny

Frischling

  • »Sveny« ist der Autor dieses Themas

Beiträge: 13

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

1

08.05.2011, 19:21

Kompilieren und .exe erstellen

Ich bin derzeit auf der Suche nach einer Software die es mir ermöglicht unter Windows XP und 7 meinen C++ Code zu kompilieren bzw. auch als .exe zu erstellen.

Das Problem an sich ist eher weniger das kompilieren, ich habe mir zum Beispiel das Visual Studio Express C++ 2010 heruntergeladen. Allerdings kann ich damit keine uneingeschränkte .exe Datei erzeugen. Wenn ich nämlich diese auf einem anderen System ausführen will, kommt eine Meldung im Sinne von Visual Studio müsse vorerst installiert werden und das kann ja nicht der Sinn sein.

Meine Frage jetzt wäre also, gibt es Alternativen die es ermöglichen C++ Code zu kompilieren und dann in eine .exe Datei umzuwandeln?
Der Krieg ist nicht immer der den man sieht, sondern der den man nicht sieht!

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

2

08.05.2011, 19:25

Mit Visual C++ Express liegst du schon richtig. Das kompilierte Programm kann auch auf jedem Rechner ausgeführt werden, sofern das Microsoft Visual C++ 2010 Redistributable Package (http://www.microsoft.com/downloads/de-de…bf-9350143d5867 - oder die x86 Variante) installiert ist. Alternativ kannst du die Packages statisch linken (in den Projekteinstellungen umstellen) wovon aber abzuraten wäre.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

3

08.05.2011, 19:44

Auch nicht vergessen die Release version zu verteilen.

Sveny

Frischling

  • »Sveny« ist der Autor dieses Themas

Beiträge: 13

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

4

08.05.2011, 19:48

Die Release Version habe ich verteilt, aber um es also klar zu definieren:

Ich müsste jeden der mein Programm letztlich nutzen möchte, darum bitten sich zusätzlich noch "Microsoft Visual C++ 2010 Redistributable Package" herunterzuladen?
Der Krieg ist nicht immer der den man sieht, sondern der den man nicht sieht!

5

08.05.2011, 19:51

Richtig!

Du kannst das Redist. Package aber auch direkt per CD / USB Stick mitliefern und ersparst dem Benutzer so den Download. So ist das bei den meisten kommerziellen Applikationen.

Da wirst wohl du nicht drum herum kommen. ;)

Gruß
SaRu_

Sveny

Frischling

  • »Sveny« ist der Autor dieses Themas

Beiträge: 13

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

6

08.05.2011, 19:55

Ok vielen Dank für die hilfreiche Aufklärung. :)
Der Krieg ist nicht immer der den man sieht, sondern der den man nicht sieht!

7

09.05.2011, 14:56

Du kannst auch einen anderen Compiler verwenden, z.B. MinGW.
Lieber dumm fragen, als dumm bleiben!

Oberon

Treue Seele

Beiträge: 181

Wohnort: Österreich

Beruf: Student

  • Private Nachricht senden

8

09.05.2011, 18:47

Du kannst auch die msvcr100.dll und msvcp100.dll beilegen, d.h. in den selben Ordner wie die .exe tun. (Bei 64 Bit Windows sind die 32 Bit Dateien in C:\Windows\SysWOW64, sonst in C:\Windows\System32). Steht auch hier ganz offiziel bei Microsoft: http://msdn.microsoft.com/en-us/library/8kche8ah.aspx. Das hat den Vorteil, dass die beiden Dateien zusammen nur 1,1 MB groß sind und dein Programm auch benutzt werden kann, wenn man keine Admin-Rechte zum Installieren des Redistributables hat :thumbup: .

EDIT: Eine weitere möglichkeit ist statisches Linken (Projekt -> Eigenschaften -> Konfigurationseigenschaften -> C/C++ -> Codegenerierung, bei Laufzeitbibliothek eine Version ohne DLL einstellen). Der große Nachteil bei diesem Ansatz ist aber, dass man auch alle verwendeten Bibliotheken dann nochmal auf gleiche Weise neu kompilieren muss :thumbdown: .

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Oberon« (09.05.2011, 18:55)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

09.05.2011, 19:36

Der ordentliche Weg ist die Runtime installieren, entweder extra über die Redist Package oder über die Merge Modules mit dem eigenen Setup. Alles Andere wird erst interessant wenn das aus irgendeinem Grund nicht möglich ist. Wenn du die dlls manuell mitliefern willst dann nimm vielleicht besser die aus ...\Microsoft Visual Studio 10.0\VC\redist. Das oder statisch linken würd ich aber wie gesagt nur machen wenn der ordentliche Weg (installieren) nicht gangbar ist oder du einen ganzen Haufen anderer verdammt guter Gründe dafür hast.

EDIT: Eine weitere möglichkeit ist statisches Linken (Projekt -> Eigenschaften -> Konfigurationseigenschaften -> C/C++ -> Codegenerierung, bei Laufzeitbibliothek eine Version ohne DLL einstellen). Der große Nachteil bei diesem Ansatz ist aber, dass man auch alle verwendeten Bibliotheken dann nochmal auf gleiche Weise neu kompilieren muss :thumbdown: .

Ich würde eher sagen die wesentlichen Nachteile sind dass die Runtime damit fix in die exe gepackt wird was dazu führt dass alle so kompilierten Module unnötig größer werden, Teile der Runtime sehr wahrscheinlich redundant im RAM liegen, etwaige Updates, Bugfixes oder Sicherheitspatches keine Wirkung auf deine Anwendung haben, ... Es hat schon seinen Grund warum die dynamische Runtime default ist. Die dlls einfach nur in das Verzeichnis der exe kopieren bringt übrigens praktisch die gleichen Probleme mit sich, daher: Runtime installieren.

Auch ein anderer Compiler ändert nix dran dass eine entsprechende Library gebraucht wird. Für Windows würd ich auf jeden Fall MSVC verwenden da das dort eben der native Compiler ist.

Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »dot« (09.05.2011, 19:58)


Werbeanzeige