<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Allgemeine Fragen zu Dlls]]></title><description><![CDATA[<p>Wenn ich eine Dll erstelle und die lib einbinde (auch die header) kann ich funktionen, enums, klassen... in die dll packen -&gt;schon gelernt wie das geht</p>
<p>nu meine fragen:</p>
<p>1 Wenn ich eine Funktion aufrufe (aus der dll) wird die jedesmal aus der dll genommen oder am anfang geladen?</p>
<p>2 Bringt es Geschwindigkeitsverluste Funktionen oder enums in eine dll zu packen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196011/allgemeine-fragen-zu-dlls</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 06:39:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196011.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Oct 2007 14:03:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Wed, 24 Oct 2007 14:03:12 GMT]]></title><description><![CDATA[<p>Wenn ich eine Dll erstelle und die lib einbinde (auch die header) kann ich funktionen, enums, klassen... in die dll packen -&gt;schon gelernt wie das geht</p>
<p>nu meine fragen:</p>
<p>1 Wenn ich eine Funktion aufrufe (aus der dll) wird die jedesmal aus der dll genommen oder am anfang geladen?</p>
<p>2 Bringt es Geschwindigkeitsverluste Funktionen oder enums in eine dll zu packen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391255</guid><dc:creator><![CDATA[Vodo Breath]]></dc:creator><pubDate>Wed, 24 Oct 2007 14:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Wed, 24 Oct 2007 14:29:15 GMT]]></title><description><![CDATA[<p>Vodo Breath schrieb:</p>
<blockquote>
<p>1 Wenn ich eine Funktion aufrufe (aus der dll) wird die jedesmal aus der dll genommen oder am anfang geladen?</p>
</blockquote>
<p>Der Code wird in den Arbeitsspeicher geladen, wenn du die DLL lädst (Optimierungen wie Lazy Evaluation, die der Kernel hier vornehmen könnte, außen vor gelassen), bzw. vor der Ausführung der Anwendung, wenn die DLL statisch eingebunden ist.</p>
<p>Vodo Breath schrieb:</p>
<blockquote>
<p>2 Bringt es Geschwindigkeitsverluste Funktionen oder enums in eine dll zu packen?</p>
</blockquote>
<p>Ein enum ist lediglich eine Typdeklaration, die in einer Headerdatei steht; dafür wird kein Code generiert.</p>
<p>Die Geschwindigkeit des Aufrufes einer Funktion hängt davon ab, welchen Typs sie ist. Bei Aufrufen statisch gelinkter Funktionen fügt der Linker deren Sprungadresse direkt in den Code ein; diese werden am schnellsten aufgerufen. Funktionen aus dynamisch geladenen DLLs werden über Funktionszeiger angesprochen, was etwas langsamer ist, und für statisch eingebundene DLLs generiert der Compiler für jede importierte Funktion einen Stub, in welchem vom Kernel beim Laden der Datei die Funktionsadressen eingetragen werden, es sind also zwei quasi hartcodierte Jumps notwendig. Inwiefern sich das in der Geschwindigkeit von den anderen Aufrufarten unterscheidet, müßte man mittels eines Profilers herausfinden, jedoch ist der Effekt vermutlich sehr gering - wenn er nicht in den durch das Caching verursachten Geschwindigkeitsunterschieden untergeht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391287</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Wed, 24 Oct 2007 14:29:15 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 01:52:45 GMT]]></title><description><![CDATA[<p>Es gibt keine statisch gebundenen DLLs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391574</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Thu, 25 Oct 2007 01:52:45 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 12:57:23 GMT]]></title><description><![CDATA[<p>bla er meint implicit runtime linking</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391862</guid><dc:creator><![CDATA[tenchou]]></dc:creator><pubDate>Thu, 25 Oct 2007 12:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 12:59:33 GMT]]></title><description><![CDATA[<p>tenchou schrieb:</p>
<blockquote>
<p>bla er meint implicit runtime linking</p>
</blockquote>
<p>Soll das ein Fachbegriff sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391865</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Thu, 25 Oct 2007 12:59:33 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 13:03:34 GMT]]></title><description><![CDATA[<p>jo hab ich aus wikipedia</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391869</guid><dc:creator><![CDATA[tenchou]]></dc:creator><pubDate>Thu, 25 Oct 2007 13:03:34 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 13:39:21 GMT]]></title><description><![CDATA[<p>Er meint bei statisch eingebundenen Funktionen eben, also OHNE DLL.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391906</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 25 Oct 2007 13:39:21 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 13:43:42 GMT]]></title><description><![CDATA[<p>ne dann hätte er ja nicht DLL gesagt. er meinte</p>
<p>1.statisch gelinkt<br />
2.dll die mit lib benutzt wird und geladen wird bevor die programmausführung beginnt<br />
3.dll die explizit mit loadlib geladen wird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391911</guid><dc:creator><![CDATA[tenchou]]></dc:creator><pubDate>Thu, 25 Oct 2007 13:43:42 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 16:11:40 GMT]]></title><description><![CDATA[<p>tenchou schrieb:</p>
<blockquote>
<p>er meinte</p>
<p>1.statisch gelinkt<br />
2.dll die mit lib benutzt wird und geladen wird bevor die programmausführung beginnt<br />
3.dll die explizit mit loadlib geladen wird</p>
</blockquote>
<p>So ist es.</p>
<p>Warum man Fall 2 nicht &quot;statisch eingebundene DLLs&quot; nennen sollte, erschließt sich mir nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392004</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Thu, 25 Oct 2007 16:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 18:14:34 GMT]]></title><description><![CDATA[<p>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392066</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 25 Oct 2007 18:14:34 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 18:35:19 GMT]]></title><description><![CDATA[<p>audacia schrieb:</p>
<blockquote>
<p>tenchou schrieb:</p>
<blockquote>
<p>er meinte</p>
<p>1.statisch gelinkt<br />
2.dll die mit lib benutzt wird und geladen wird bevor die programmausführung beginnt<br />
3.dll die explizit mit loadlib geladen wird</p>
</blockquote>
<p>So ist es.</p>
<p>Warum man Fall 2 nicht &quot;statisch eingebundene DLLs&quot; nennen sollte, erschließt sich mir nicht.</p>
</blockquote>
<p>Weil eine STATISCHE Einbindung einer DYNAMISCHEN Link Library sinnfrei ist. Statische Bindung bedeutet, dass beim Linken der Objektcode in das Binary aufgenommen wird. Und genau das wird eben bei DLLs nicht gemacht - völlig egal ob implizit oder explizite Einbindung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392087</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Thu, 25 Oct 2007 18:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 19:00:56 GMT]]></title><description><![CDATA[<p>Aber Vorsicht. Soll der Programmcode der DLL nur einmal im Speicher vorliegen dann muss immer die gleiche DLL aufgerufen werden. Windows Unterscheidet auch hier in welchem Verzeichnis sich diese befindet. 2 Aufrufe mit Unterschiedlichen Verz. laden auch den selben Code 2 Mal in den Speicher was eigentlich nicht der Sinn einer DLL ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392108</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Thu, 25 Oct 2007 19:00:56 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 20:28:46 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Weil eine STATISCHE Einbindung einer DYNAMISCHEN Link Library sinnfrei ist.</p>
</blockquote>
<p>Aus Sicht des Programmierers ist es eine teils vom Linker, teils vom PE-Loader vorgenommene statische Einbindung, da der Code weder manuell (dynamisch) geladen werden muß noch kann. Der Begriff &quot;statisches Einbinden einer DLL&quot; gibt diesen Sachverhalt IMHO unzweideutig wieder - DLLs können nur zur Laufzeit geladen, aber statisch eingebunden werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392169</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Thu, 25 Oct 2007 20:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Thu, 25 Oct 2007 22:45:27 GMT]]></title><description><![CDATA[<p>Wie gesagt: statisch ist zur Compile/Linkzeit, dynamisch zur Laufzeit. Die Begriffe sind eigentlich gut definiert...<br />
Aber es sei dir freigestellt weiter deine Terminologie zu benutzen;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392227</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Thu, 25 Oct 2007 22:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Fri, 26 Oct 2007 12:44:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Weil eine STATISCHE Einbindung einer DYNAMISCHEN Link Library sinnfrei ist.</p>
</blockquote>
<p>Nicht ganz ! oder hasst du ne andere Idee um nen funktionalitaet aus nem compilierten binary das ne andere runtime nutzt, in deiner App zu verwenden ?</p>
<p>Dll's sind unter anderem auch gut, wenn man projekte entkoppeln will. also teilaufgaben einem anderen Team / firma zuweissen will die ne andere runtime / anderen compiler verwenden.</p>
<p>klar kann man die nicht mit der vom dll compiler generierten importlib linken lassen, aber vielleicht kann man die importlib vom eigenen compiler bauen lassen.</p>
<p>oder die lib selber proggen ...</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392497</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 26 Oct 2007 12:44:55 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Fragen zu Dlls on Sat, 27 Oct 2007 11:20:17 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Wie gesagt: statisch ist zur Compile/Linkzeit, dynamisch zur Laufzeit. Die Begriffe sind eigentlich gut definiert...</p>
</blockquote>
<p>Das steht nicht im Widerspruch zum Begriff der statisch eingebundenen DLL. Für die formelle Einbindung sorgen ja Compiler und Linker, lediglich das Laden der Datei erledigt das Betriebssystem. Das Laden der DLL geschieht überdies auch nicht zur Laufzeit, sondern kurz davor, nämlich wenn der PE-Loader die Anwendung initialisiert.</p>
<p>Abschließend sollte ich vielleicht auf den <a href="http://msdn2.microsoft.com/en-us/library/9yd93633.aspx" rel="nofollow">entsprechenden MSDN-Artikel</a> verweisen:</p>
<p>MSDN - Linking an Executable to a DLL schrieb:</p>
<blockquote>
<p>Implicit linking is sometimes referred to as static load or load-time dynamic linking.</p>
</blockquote>
<p>Demnach können wir uns auf den weniger explanativen, aber offenbar gemeinhin gebräuchlichen Begriff &quot;implizites Linken&quot; einigen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392943</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sat, 27 Oct 2007 11:20:17 GMT</pubDate></item></channel></rss>