[C++] Dev-Cpp - Kompilierte Dateien sehr groß?

Registriert
Dez. 2002
Beiträge
184
Moin!

Also, meine Wenigkeit arbeitet sich gerade in C++ ein. Dabei nutze ich Dev-C++ von Bloodshed und bin eigentlich (bis auf die ein oder andere Ausnahme) recht zufrieden damit.

Ich wundere mich nur, wie riesig die Dateien (kompilierte Fassung) sind:

Ein simples Programm, welches in einer Funktion den Kehrwert einer Zahl ausrechnet (nicht lachen, ich fang halt grad erst an...), schluckt schon mal satte 440kb... :o Find ich ein bissel viel, irgendwie.

Selbst mit PaX (von shadoware.de) optimiert sind es noch > 300kb...

Ist das normal bei C++ oder wie? Kann ich mir kaum vorstellen...

Würde mich über Hilfe freuen und sagen schon mal Danke!

Greets - SK
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

Das nächste mal ein bisschen weniger Debug-Code hineinmischen lassen, ja?
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

In den Projet-Optionen unter Compiler->Linker "EXE entfernen" auf Yes und "Generiert Fehlersuchinformation" auf No (falls Du es in Englisch hast, entsprechende Optionen setzen).
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

Hab für solche Sachen immer den kostenlosen Borland Compiler verwendet. Der hält die Dateien standardmäßig schon schön klein. Soweit ich mich noch erinnere, waren die Dateien immer unter 20-30kb.
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

@Rika: Hä?

@el guapo: Danke, werd ich mal ausprobieren wenn ich nach Hause komme. Melde mich dann wieder.

Danke - SK
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

Schattenkanzler schrieb:

Viele Compiler mischen extra Code ein, um die Fehlersuche im Debug-Modus zu unterstützen. Das kann bei der Entwicklung eines Projektes sehr hilfreich sein, wenn es aber dann mal läuft, sollte man einen neuen Kompilierdurchlauf starten ohne diese Debuginformatione.
el guapo hat ja schon geklärt, wie man das beim Dev-C++ macht.

Gruß
Morgoth
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

Ach so, ok! Danke euch erstmal. Werde mal sehen, ob ich die Tipps vernünftig in die Praxis umsetzen kann...

Hab da aber gleich noch zwei Fragen zu DevC++:

1. Kann man irgendwie abstellen, dass bei einem neuen Projekt (Konsolenfenster) automatisch ein bestimmter Code eingefügt wird? Oder diesen editieren?

2. Angeblich braucht man doch irgendeine zusätzliche Datei, um mit DevC++ kompilierte Dateien auszuführen. Diese wird zwar ab einer bestimmte Windowsversion mitgeliefert, aber irgendwie find ich das trotzdem ziemlich doof...
Stimmt das? Kann man dagegen was tun?

Greets - SK
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

1) Ja, Du kannst im DevC-Ordner im Templates Unter-Ordner die "Projekte" sehen, die DevC von Haus aus unterstützt. Dort findest Du auch die Quelltexte, die standardmäßig miterzeugt werden, z. B. in der ConsoleApp_cpp.txt.

2) Mmh, nicht das ich wüsste, evtl. ging es bei dem, was Du gehört hast, um etwas sehr spezielles. Wenn Du eine exe erstellt hast, läuft sie auch (evtl. mit Bug ;)). Vielleicht ging es um Bibliotheken, die benötigt wurden, um z. B. OpenGl-Zeugs oder sonstiges zu programmieren?! *schulterzuck*
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

Hmm, was ich meinte, habe ich hier gefunden.
Da heißt es wörtlich:
The executables compiled by Dev-C++ will need MSVCRT.DLL (comes with Windows 95 OSR 2 or higher).
(zu finden unter "Requirements".

Klingt ein bisschen nach Microsoft Visual C RunTime, oder?

Greets - SK
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

Achso. Also wenn ich mich nicht irre, bedeutet das im Endeffekt, dass Deine exe's nicht mehr unter Dos lauffähig sind. Jeder Windows-Rechner sollte sie jedoch ausführen können, Du brauchst Dich darum nicht zu kümmern.
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

Wunderbar...wollte schon fast umsteigen - denn bei sowas hätt ich auch bei VB bleiben können...also wirklich *g*

Greets und Thx - SK
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

Es ist die Microsoft Visual C Runtime. ;) Die sollte allen neueren Windows-Versionen aber beiliegen. Von daher dürfte das kein Problem sein. (Hmm... steht ja sogar dabei :D )
 
Zuletzt bearbeitet:
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

el guapo schrieb:
Achso. Also wenn ich mich nicht irre, bedeutet das im Endeffekt, dass Deine exe's nicht mehr unter Dos lauffähig sind. Jeder Windows-Rechner sollte sie jedoch ausführen können, Du brauchst Dich darum nicht zu kümmern.

Im Prinzip ja, aber unter Win95a dürfte es ohne Runtime-Update auch nicht laufen!
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

shroty schrieb:
Im Prinzip ja, aber unter Win95a dürfte es ohne Runtime-Update auch nicht laufen!
wer the hell hat auch noch windows 95a?
 
Re: Dev-Cpp - Kompilierte Dateien sehr groß?

[UPS]Erazor schrieb:
wer the hell hat auch noch windows 95a?
Auch ne Wahrheit :D

Eine Sache wüsste ich aber gerne noch:

Ich habe aus einem Buch folgenden Code:
Code:
#include <iostream.h>           //für cout/cin

class Cat
 {
  public:
   Cat(int initAge);
   ~Cat();
   int GetAge();
   void SetAge(int age);
   void Meow();
  private:
   int itsAge ;
 };

//Konstruktor für Cat:
Cat::Cat(int initAge)

 {
  itsAge=initAge;
 } 

//Zugriffsfunktionen:

int Cat::GetAge()
 {
  return itsAge;
 }
 
void Cat::SetAge(int age)
 {
  itsAge = age;
 }
 
void Cat::Meow()
 {
  cout << "Meow!\n";  
 }

//Hauptteil

int main()
 {
  Cat Charly(5);
  int c_age;
  cout << "Momentan ist die Katze " << Charly.GetAge() << " Jahre alt!\n\n";
  cout << "Wie alt soll die Katze sein?  ";
  cin  >> c_age;
  Charly.SetAge(c_age);
  Charly.Meow();
  cout << "Charly ist " << Charly.GetAge() << " Jahre alt!\n";
  Charly.Meow();
  system("pause");
  return 0;
 }

Blöderweise kommt der Compiler nicht mit dem Destruktor klar...was hab ich falsch gemacht?

Greets - SK
 
Naja, Du hast den Destruktor zwar deklariert, aber nicht definiert ;)

Schreib das hier noch hin:

Code:
Cat::~Cat ()
{
}

Alternativ kannst Du den Destruktor oben in der Klassendeklaration weglassen - dann erzeugt der Compiler automatisch einen leeren Destruktor
 
Zuletzt bearbeitet:
Also ist es egal, ob ich ihn selbst leer lasse oder ob ich ihn leer vom Compiler erzeugen lasse?
Würde bedeutet: Wenn ich beim Zerstören der Instanz (hab ich das richtig verstanden, dass immer nur eine Instanz zerstört wird?) z.B. ein Ereignis auslösen möchte, dann schreib ich das in den Destruktor mit rein...ansonsten lass ich alles weg?
Ich könnte also so was machen wie
Code:
 Cat::~Cat
 {
   cout << "Die Katze ist gestorben!\n";
 }
Oder wie?

Greets - SK

[edit]
Ist das peinlich...das steht ja doch im Buch...*räusper*
[/edit]
 
Zuletzt bearbeitet:
Hm naja, im Destruktor sollte man eigentlich keine Ereignisse mehr aufrufen. Für so einen Test, wie Du ihn machst, ist es ganz okay - aber wenn man z.B. keine Garantie hat, in welcher Reihenfolge sich bestimmte Objekte zerstören, kann man schon mal ein Problem bekommen.

Ansonsten spielt es (fast!) keine Rolle, ob Du den Destruktor leer lässt, oder ihn ganz weglässt. Warum ich fast geschrieben habe, wirst Du erkennen, wenn Du zum Thema Polymorphie kommst ;)
 
Ja, nee, is klar!

Hab das mal probiert mit dem Inhalt im Destruktor und es funktionierte auch.

Polymorphie ist mir ja schon irgendwie ein Begriff...würde mich aber freuen, wenn du mir a) den Zusammenhang erklären und b) vielleicht ein Miniaturbeispiel geben könntest...*lernen will*

Wo ich grad schon mal am fragen bin:
Code:
 system("pause");
Ist das ein Standardbefehl oder versteht den nur Dev-C++?

Greets - SK
 
Polymorphie kann man hier nicht mit drei Sätzen erschlagen, sorry :) Ist schon etwas komplexer, das Ganze. Versuch Dich doch einfach mal an einem Buch. Bei Fragen helf ich Dir aber gern weiter.

system ist ein Standard-Befehl (sogar plattform-unabhängig). Wird unter C in stdlib.h bzw. unter C++ in cstdlib deklariert. Dient zum Aufrufen von Dateien. Das "pause" wird allerdings nur auf einem Windows-Rechner funktionieren.
 
Zurück
Oben