Du bist nicht angemeldet.

Werbeanzeige

1

25.12.2012, 17:25

Warum werden DLLs verwendet?

Hallo,
warum bestehen die meisten Spiele aus der exe und mehreren dll's? Es ist doch viel umständlicher das ganze zu programmieren. Welcher vorteile hast das ganze? Gibts auch nachteile?

MfG
MazzMan
Hi

Cookiezzz

Frischling

Beiträge: 91

Wohnort: Deutschland

Beruf: Schüler

  • Private Nachricht senden

2

25.12.2012, 17:38

Hi,

hier sollte eigentlich alles stehen: ;)

[url]http://de.wikipedia.org/wiki/Dynamic_Link_Library
[/url]

Cookiezzz

3

25.12.2012, 20:12

Achso, also ist es bei Spielen nur wegen Updates von Vorteil? Immerhin ist es bei Spielen ja nicht so, dass der Programmcode von noch mehr als einer Anwedung genutzt wird.
Hi

m3xx

Alter Hase

Beiträge: 437

Beruf: Student

  • Private Nachricht senden

4

25.12.2012, 20:28

Generell wenn du etwas an deinem Programm verändern willst, z.B. durch drücken eines Button etc.
Da die Anwendung selbst ja geschützt ist während sie läuft.

Schorsch

Supermoderator

Beiträge: 5 198

Wohnort: Wickede

Beruf: Student

  • Private Nachricht senden

5

28.12.2012, 12:26

Wobei das eher selten ist. Bei Spielen kommt noch dazu, dass normalerweise nicht alles komplett für das Spiel geschrieben wird. Unter Umständen werden eine Engine oder bestimmte Bibliotheken verwendet um sich die Arbeit zu vereinfachen. Vielleicht wird auch eine eigene Engine entwickelt und diese möchte man möglicherweise noch mal verwenden. Bei einer Engine oder einem Framework kann man durch mehrere DLL's Module einteilen. Wenn man nicht jedes Modul benötigt muss vielleicht auch nicht jedes Modul mit ausgeliefert werden, was Speicherplatz spart.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

David Scherfgen

Administrator

Beiträge: 10 246

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

28.12.2012, 13:30

Normalerweise sind an der Entwicklung eines Spiels ja auch noch unzählige Tools beteiligt, insbesondere für die Content Pipeline: Konverter/Importer für 3D-Modelle, Grafiken, Fonts, Sounds, Musik, Animationen, Levels (Level-Editor!). All diese Tools können dieselben DLLs wie das Spiel benutzen und auf die darin implementierte Funktionalität zurückgreifen.

drakon

Supermoderator

Beiträge: 6 522

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

28.12.2012, 13:34

Auch nennenswerte Punkte sind: Abhängigkeiten verringern und Modularisierung. Während der Entwicklung sind DLLs auch ganz praktisch, weil man nicht alles neu kompilieren muss, wenn sich etwas ändert (ist natürlich eine Folgerung von den verringerten Abhängigkeiten).

m3xx

Alter Hase

Beiträge: 437

Beruf: Student

  • Private Nachricht senden

8

28.12.2012, 14:07

Was mir jetz noch so einfällt du kannst da Ressourcen einlagern, die halt nicht vom Normaluser angefasst werden sollen

Legend

Alter Hase

Beiträge: 740

Beruf: Softwareentwickler

  • Private Nachricht senden

9

28.12.2012, 14:15

Ein Nachteil der mir einfallen würde, wäre das vielleicht der Linker noch ein paar Optimierungen mehr durchführen könnte, wenn er zur Linkzeit den ganzen Binärcode in eine EXE packen könnte. Aber ich glaube, die schon genannten Vorteile überwiegen sowas.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Evrey

Treue Seele

Beiträge: 246

Beruf: Weltherrscher

  • Private Nachricht senden

10

05.01.2013, 23:24

Und Aufrufe von Funktionen aus dynamischen Bibliotheken sind langsamer als die von Funktionen um die Ecke in der ELF/EXE im selben Segment, wen sowas jucken sollte. Vorteile überwiegen.

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

Werbeanzeige