DLLs Vorteil/Nachtei/Tutorial?
-
Hi!
Welche Vorteile/Nachteile haben DLLs, gibt es Tuts zur Programmierung?
Denn ich würde meine Verschlüsselung gern in einer DLL realisieren und benutzen, doch habe keine Ahnung wie das geht...THX

-
Dynamische Biblioteken wie die Dlls haben den Vorteil, dass sie eben dynamisch geladen werde. => man kann sieselbst während das Programm läuft austauschen, du kannst nach dlls in einem Ordner suchen und alle einbinden die du findest (Plugins) oder den Teil des Programmes nur bei bedarf laden um die Resourcen zu schohnen ...
-
vorteil ist vor allem, das der inhalt nicht, wie bei standadmäßigen .o files komplett in die exe eingebaut wie, und das in jedem Projekt, sondern, dass man eine DLL für alle seine Projekte nutzen kann. Wenn man sowiso nur vor hat das ganze in einem Projekt zu benutzen, dann würd ich das einfach nur in eine eigene cpp und dazugehörigem header packen. ABer das ganze zu lernen hat auf jeden fall keine nachteile. Versuch aber mal selbst nach tutorials zu suchen, wie man DLLs bastelt, da msste es mehr als nur eins im internet zu finden sein.
-
Krux schrieb:
Wenn man sowiso nur vor hat das ganze in einem Projekt zu benutzen, dann würd ich das einfach nur in eine eigene cpp und dazugehörigem header packen.
wieso nicht einfach die cpp/header in ein anderes Projekt einfügen?

-
otze schrieb:
Krux schrieb:
Wenn man sowiso nur vor hat das ganze in einem Projekt zu benutzen, dann würd ich das einfach nur in eine eigene cpp und dazugehörigem header packen.
wieso nicht einfach die cpp/header in ein anderes Projekt einfügen?

Weil man dann bei einer kleinen Änderung der .cpp alle Projekte neu kompilieren müsste...
-
The-Kenny schrieb:
wieso nicht einfach die cpp/header in ein anderes Projekt einfügen?

Weil man dann bei einer kleinen Änderung der .cpp alle Projekte neu kompilieren müsste...[/quote]
nein, musst du nicht. wenn deine anderen projekte fertig sind, musst du nichts ändern. wenn du an der cpp allerdings doch was ändern musst, dann ist es richtig, direkt die anderen projekte neu zu compilieren, weil bugfixes halt gemacht werden müssen ;). Wenn deine anderen projekte eh noch nicht fertig sind, dann ist es eh wurscht, compilieren musst sie so oder so nochmal.dem gegenüber stehen halt die nachteile der dlls:
1. ätzende Syntax
2. unübersichtlichkeit
3. template probleme
4. austauschbarkeit zwischen compilern
5. windows spezifisch
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Weil es Resourcen spart.
Header in CPP einbinden vergrößert das Programm.
Eine DLL wird nur einmal geladen und jedes Programm verwendet die geladene DLL. Somit ist der gleiche Code nicht X-Mal im System geladen.
Was glaub ihr was in Windows passiert wenn jedes Programm immer wieder die MFC neu in seinen Speicher laden muss.
-
- Jede DLL hat ihren eigenen Heap => Pointerprobleme
- Konstruktoren (von globalen Objekten) dürfen in DLLs weder Threads starten noch DLLs laden, da sie in der DLLMain aufgerufen werden, in der das verboten ist.
Nimm doch .NET oder Shared Libraries!
-
Und was glaubst du was eine Shared LIB ist? Unter Linux heben diese die Endung *.so
für Shared Object und unter Windows eben *.dll
-
Hi,
ich würde sagen, unabhängig von der Sprache/Umgebung hast Du eigentlich immer die Vor- und Nachteile der "Kopplung":
+ Spart Platz/Code, ReUse
- Verwaltungsoverhead, KollisionenIch weiß noch, wie damals in Windows DLLs eingeführt wurden und es hieß, ALLES müsste nun in DLLs liegen ... inzwischen weiß man glücklicherweise, dass es (wie jedes Werkezeug, jede Technik) mal mehr mal weniger geeignet ist.
Gruß,
Simon2.
-
da ist ein kleines tutorial, ich hab die seite mal aus reinem Zufall entdeckt:
http://members.inode.at/anton.zechner/az/index.html
Sind auch noch andere nette sachen dabei
-
Danke!

-
Unix-Tom schrieb:
Und was glaubst du was eine Shared LIB ist? Unter Linux heben diese die Endung *.so
für Shared Object und unter Windows eben *.dllUnix-Tom kennt den Unterschied zwischen Linux Shared Libraries und Windows DLLs nicht?
In Shared Libraries gelten beide von mir äääh Skeptiker genannten Einschränkungen nicht.
-
darthdespotism schrieb:
Dynamische Biblioteken wie die Dlls haben den Vorteil, dass sie eben dynamisch geladen werde. => man kann sieselbst während das Programm läuft austauschen,...
Wenn eine DLL benutz wird, kann ich sie nicht mal löschen. Wie dann austauschen, wenn das Programm läuft?
-
Auch eine "Bibliothek" in Linux kann man Linken und sie wird beim Programmstart geladen. Genauso wie eine DLL.
Genauso kann man eine DLL dynamisch laden genauso wie eine *.so.
Ich kenne sehr wohl beide.
DLL`s unter Windows werden geshared wenn man die gleiche DLL im selben Ordner aufruft.
-
Unix-Tom schrieb:
Auch eine "Bibliothek" in Linux kann man Linken und sie wird beim Programmstart geladen. Genauso wie eine DLL.
Genauso kann man eine DLL dynamisch laden genauso wie eine *.so.Das ist ja wohl bekannt.
Unix-Tom schrieb:
Ich kenne sehr wohl beide.
Aber offensichtlich nicht gut genug.
Unix-Tom schrieb:
DLL`s unter Windows werden geshared wenn man die gleiche DLL im selben Ordner aufruft.
Darum gehts doch nicht. Es geht doch vor allem darum, dass man nicht Pointerownership zwischen DLLs transferieren kann. Und die Sache mit den Threads / anderen DLLs.
Diese Einschränkungen haben mich so angekotzt, dass ich nichtmal versucht habe, mein Plugin-System auf Windows zu portieren.

-
wie du meinst!
Wenn du das nicht kannst dann verwendest du eben keine Windows-DLL.
-
-
Mr. N schrieb:
Diese Einschränkungen haben mich so angekotzt, dass ich nichtmal versucht habe, mein Plugin-System auf Windows zu portieren.

Könnte auch daran liegen, dass dein "Plugin-System" ein grottenschlechtes Design hat. DLLs können dafür nichts. Adobe hat keine Probleme mit Plugin-Systemen und DLLs
