C++ mit weniger Ballast?

Hallo zusammen,

ich hatte eigentlich vorgehabt, C# zu lernen. Da die aber eine mehrere Mb große Laufzeitumgebung braucht und ich auch ruckzuck-downloadbare Programme schreiben möchte, kommt C# vielleicht in zwei Jahren in Frage, wenn nur noch wenige Endverbraucher keine .NET-Runtime installiert haben.

Darum habe ich nun wieder C++ im Auge. Im C#-Forum wurde argumentiert, auch C++ müsse Runtime-DLLs mit sich herumschleppen oder wenigstens voraussetzen. Für mich wäre das nur dann ein Problem, wenn diese DLLs richtig groß sind. Darum meine Frage: Wie groß sind solche DLLs?

Viele Grüße,

Mohamed.

Also am besten wir gugen einfach mal in unseren Windows Ordner
z.B. C:\WINDOWS\system32
und bemerken das es unterschiedlich grosse DLL’s gibt.
Beim installieren liefert man aber am Besten alle DLL’s die möglich sind. Z,B, verschiedene Sprachen Dll. Oder fremde DLL die z.b. ein gerät steuern. Da will man vielleicht auch nur ein paar Codeschnippel benutzen, brauche aber die ganze DLL um eine Funktion nutzen zu können.

Also eine DLL ist vorkompilierter sourcecode den man extern benutzen kann.

Bei einigen z.B. Visual C++ wird dennoch vom Compiler runter auf C# compiliert, was dann C++ funktionell darstellt.

Alles im allen liegt es daran was du für Ressourcen brauchst. Ist alles in einer DLL , oder sind ist viele DLL’s und auch noch groß, muss für jede DLL noch ne Sprache sein etc …

Es gibt also programme die gleichviel code input benötigen, aber unterschiedlich gross werden am ende. Je nachdem wieviele sourcen und Funktionen von allem benötigt wird :smile:

bis dann

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Gemeint war eigentlich…

Hi Rakon,

danke, aber es war von speziellen DLLs die Rede, ohne die kein C+±Programm auskomme, egal was für externe Funktionen es benutzt. Den Umfang dieses Mindestballasts hätte ich gerne gewusst…

Viele Grüße,

Mohamed.

Hallo,

danke, aber es war von speziellen DLLs die Rede, ohne die kein
C+±Programm auskomme, egal was für externe Funktionen es
benutzt. Den Umfang dieses Mindestballasts hätte ich gerne
gewusst…

beim Visual C++ Compiler wärs die „msvcrXX.dll“ wobei XX für „70“ beim 2002er, „71“ beim 2003er und „80“ beim 2005er steht. Die Dll ist die Standard C Library.

Wenn das ganze mit dem gcc(mingw32) kompilierst, wird deine .exe Datei zwar nicht so schön super klein wie beim Visual Studio, hat dafür aber auch keine wirklichen Dll abhängigkeiten :wink:

mfg,
Christoph

PS: Es kann auch sein, dass man die C-Runtime statisch linken kann, hab ich aber noch nie probiert.

Hört sich an, als ob…

Hallo c.keller,

ich denke, das hat mir weitergeholfen :smile: . Hört sich an, als ob ein C+±Programm samt Runtime weit unter 1 MB gedrückt werden kann… Oder?

Viele Grüße,

Mohamed.

Ein Beispiel >
Ein Test hat bei einem Tool >siehe bild http://global-eworld-consulting.de/tool/
hat bei statisch gelinkter MFC71 376kb (ist dann aber einsprachig (deutsch))
bei dznamisch gelinkter MFC71 92kb
auf der webseite siehst du ungefähr den umfang der programfunktionen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ich denke, das hat mir weitergeholfen :smile: . Hört sich an, als
ob ein C+±Programm samt Runtime weit unter 1 MB gedrückt
werden kann… Oder?

Eins noch, hab ich vorher vergessen … du kannst unter http://www.dependencywalker.com/ ein Programm runterladen, mit dem du nach dem Kompilieren deine exe/dll untersuchen kannst. Es werden alle von deinem Programm benötigten Dll’s aufgelistet und sogar die verwendeten Funktionen grün markiert :wink:
Damit kannst du sichergehen, dass auch schön brav alles mitgeliefert wird.

Achja, die C++ Runtime kann wohl runtergedrückt werden, aber MFC/wxWidgets etc. ziehen die Größe natürlich wieder hoch. Eine weitere Hilfe, um die Datei klein zu halten ist bei den Projekteinstellungen „Function level linking“ einzuschalten, dann werden von deinem eigenen Code bzw. per „.lib“-Datei eingebundenen Code nur die Funktionen gelinkt, die auch wirklich verwendet werden.

mfg,
Christoph