<?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[Modul einbinden &amp;gt; Linker error]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe ein problem mit dem einbinden eines moduls in meine hauptfunktion. Hier mal der Quellcode:<br />
Hier die Main funktion main.cpp:</p>
<p># include &lt;iostream&gt;<br />
# include &quot;wieoft.h&quot;</p>
<p>using namespace std;</p>
<p>int main ()<br />
{<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
}</p>
<p>Modul wieoft.cpp</p>
<p># include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int wieoft ()<br />
{<br />
static int a=1;<br />
return (a++);<br />
}</p>
<p>und die dazugehörige header datei wieoft.h:</p>
<p>int wieoft (void);</p>
<p>wenn ich das kompiliere bekomme ich immer einen linker error vom compiler zurück.<br />
[linker error] undefined referece to 'wieoft()'<br />
ich hoffe ihr könnt mir helfen,<br />
greetz<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/127998/modul-einbinden-gt-linker-error</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 22:51:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/127998.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Nov 2005 14:26:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 14:26:01 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe ein problem mit dem einbinden eines moduls in meine hauptfunktion. Hier mal der Quellcode:<br />
Hier die Main funktion main.cpp:</p>
<p># include &lt;iostream&gt;<br />
# include &quot;wieoft.h&quot;</p>
<p>using namespace std;</p>
<p>int main ()<br />
{<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.&quot; &lt;&lt; endl;<br />
}</p>
<p>Modul wieoft.cpp</p>
<p># include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int wieoft ()<br />
{<br />
static int a=1;<br />
return (a++);<br />
}</p>
<p>und die dazugehörige header datei wieoft.h:</p>
<p>int wieoft (void);</p>
<p>wenn ich das kompiliere bekomme ich immer einen linker error vom compiler zurück.<br />
[linker error] undefined referece to 'wieoft()'<br />
ich hoffe ihr könnt mir helfen,<br />
greetz<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/929761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/929761</guid><dc:creator><![CDATA[Segafredo]]></dc:creator><pubDate>Tue, 29 Nov 2005 14:26:01 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 14:33:01 GMT]]></title><description><![CDATA[<p>Hast du die wieoft.cpp Datei eigentlich mitkompiliert und gelinkt?</p>
<p>Besserer Code:</p>
<pre><code class="language-cpp">//wieoft.hpp
namespace {
  int wieoft();
}
</code></pre>
<pre><code class="language-cpp">//wieoft.cpp
#include &quot;wieoft.hpp&quot;

namespace {
  int wieoft() {
    static int i=0;
    return ++i;
  }
}
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;wieoft.hpp&quot;

int main(int argc, char **argv) {
  for (int i=0;i&lt;10;++i)
    std::cout&lt;&lt;&quot;Dies ist der: &quot; &lt;&lt; wieoft ()&lt;&lt; &quot;. Aufruf der Funktion \&quot;wieoft\&quot;.\n&quot;;
  return EXIT_SUCCESS;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/929770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/929770</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 29 Nov 2005 14:33:01 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 14:36:15 GMT]]></title><description><![CDATA[<p>Das &quot;Modul&quot; nennt sich übrigens Header.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/929776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/929776</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 29 Nov 2005 14:36:15 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 16:07:50 GMT]]></title><description><![CDATA[<p>Sorry wenn sich die fragen jetzt vielleicht n bissl blöd anhören, aber ich fange gerade erst mit programmieren an.<br />
-Was genau meinst du mit gelink? Ich habe versucht die wieoft.cpp zu kompilieren aber da bekomme ich immer die Fehlermeldung:<br />
[Linker error] undefined reference to `WinMain@16'<br />
die mir leider überhaupt nichts sagt.<br />
-Es ist super nett von Dir den verbesserten Code zu posten aber irgendwie versteh ich das Meiste aus der main.cpp nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /> .<br />
Habe mit einem Lehrbuch angefangen und mich jetzt seit Tage an diesem Problem festgebissen und daher auch nicht weiter gelesen. Kontrollstrukturen kommen z.B. erst noch. Die Sternchen in der Übergabe der Main.cpp sagen mir leider auch garnichts.<br />
Trotzdem Danke für Deine Mühe<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/929903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/929903</guid><dc:creator><![CDATA[Segafredo]]></dc:creator><pubDate>Tue, 29 Nov 2005 16:07:50 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 16:57:17 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>Besserer Code:</p>
</blockquote>
<p>Hast du das eigentlich mal ausprobiert? Sieht oberflächlich gesehen aus als hättest du genau den gleichen Linker-Error eleganter nachgebaut <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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8787">@Segafredo</a><br />
Welchen Compiler/welche IDE benutzt du?</p>
<p>Segafredo schrieb:</p>
<blockquote>
<p>-Es ist super nett von Dir den verbesserten Code zu posten aber irgendwie versteh ich das Meiste aus der main.cpp nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /> .</p>
</blockquote>
<p>Hat im Prinzip den selben Effekt wie dein Code. Die Parameter und das return kannst du im Grunde weglassen, dann bleibt nur noch die Schleife statt zigmal die selbe Codezeile dahinzupasten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/929952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/929952</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 29 Nov 2005 16:57:17 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 17:52:59 GMT]]></title><description><![CDATA[<blockquote>
<p>-Was genau meinst du mit gelink? Ich habe versucht die wieoft.cpp zu kompilieren aber da bekomme ich immer die Fehlermeldung:<br />
[Linker error] undefined reference to `WinMain@16'<br />
die mir leider überhaupt nichts sagt.</p>
</blockquote>
<p>Der Punkt ist, dass du deine main.cpp und die wieoft.cpp gleichzeitig in einem Schritt kompilieren sollst, dann findet er auch die main Methode, und zwar in main.cpp, linken ist einfach die Erstellung einer ausführbaren Datei aus deinem Code (und evtl. verwendeten Bibliotheken).</p>
<blockquote>
<p>Hast du das eigentlich mal ausprobiert? Sieht oberflächlich gesehen aus als hättest du genau den gleichen Linker-Error eleganter nachgebaut <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>
</blockquote>
<p>Nein, hab's nur so hingeschrieben, Verwendung von anonymen namespace sollte Problem eliminiert haben. Werd's gleich mal ausprobieren.</p>
<blockquote>
<p>das return kannst du im Grunde weglassen</p>
</blockquote>
<p>Bloß weil's deinen Compiler nicht juckt, ist es noch lange nicht gut. Ans Ende von main gehört ein return! Gerade Anfängern sollte man das eintrichtern. Sonst stehen sie in 3 Jahren hier und schreiben void main oder int main ohne return.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930008</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 29 Nov 2005 17:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 18:13:42 GMT]]></title><description><![CDATA[<blockquote>
<blockquote>
<p>Hast du das eigentlich mal ausprobiert? Sieht oberflächlich gesehen aus als hättest du genau den gleichen Linker-Error eleganter nachgebaut <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>
</blockquote>
<p>Nein, hab's nur so hingeschrieben, Verwendung von anonymen namespace sollte Problem eliminiert haben. Werd's gleich mal ausprobieren.</p>
</blockquote>
<p>mit anonymen namespaces kann das niemals funktionieren - der sinn von solchen namespaces ist ja gerade, dass sie in jeder ÜE einen anderen internen namen haben. d.h. alles was du in annonymen namespaces deklarierst, muss auch in der ÜE, in der es verwendet wird, definiert werden (und diese definition kolliert mit keiner definition in einer anderen ÜE. erst so wird static für gloable bezeichner überflüssig.</p>
<p>GPC schrieb:</p>
<blockquote>
<blockquote>
<p>das return kannst du im Grunde weglassen</p>
</blockquote>
<p>Bloß weil's deinen Compiler nicht juckt, ist es noch lange nicht gut. Ans Ende von main gehört ein return! Gerade Anfängern sollte man das eintrichtern. Sonst stehen sie in 3 Jahren hier und schreiben void main oder int main ohne return.</p>
</blockquote>
<p>main ist keine normale funktion und ein return statement ist dort nicht notwendig. allerdings gab es keinen grund das zu erwähnen. es ist schliesslich niemals schlechter stil, dort ein return stehen zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930029</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 29 Nov 2005 18:13:42 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 18:17:02 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a>, finix<br />
Stimmt, ihr habt recht, hab mich vertan. Man kann die Implementierung aber auch in die hpp Datei packen und gut is.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930037</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 29 Nov 2005 18:17:02 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Tue, 29 Nov 2005 18:28:00 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<blockquote>
<p>Hast du das eigentlich mal ausprobiert? Sieht oberflächlich gesehen aus als hättest du genau den gleichen Linker-Error eleganter nachgebaut <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>
</blockquote>
<p>Nein, hab's nur so hingeschrieben, Verwendung von anonymen namespace sollte Problem eliminiert haben. Werd's gleich mal ausprobieren.</p>
</blockquote>
<p>Internal linkage?</p>
<blockquote>
<p>das return kannst du im Grunde weglassen</p>
</blockquote>
<p>Bloß weil's deinen Compiler nicht juckt, ist es noch lange nicht gut. Ans Ende von main gehört ein return! Gerade Anfängern sollte man das eintrichtern. Sonst stehen sie in 3 Jahren hier und schreiben void main oder int main ohne return.[/quote]<br />
Soweit ich mich entsinne juckt's den Standard auch nicht wirklich - und meist kann ich mit dem impliziten &quot;return 0;&quot; leben. Aber du hast Recht, gerade Anfängern sollte man die ganze Sache nicht verkomplizieren.</p>
<p>Edit: oh wie lahm! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Aber noch was:</p>
<p>GPC schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a>, finix<br />
Stimmt, ihr habt recht, hab mich vertan. Man kann die Implementierung aber auch in die hpp Datei packen und gut is.</p>
</blockquote>
<p>Erstell mal eine weitere ÜE in der du die <em>wieoft</em>-Funktion zusätzlich testest...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930040</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 29 Nov 2005 18:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Wed, 07 Dec 2005 17:39:48 GMT]]></title><description><![CDATA[<p>Hi zusammen,<br />
danke für die vielen Antworten.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a><br />
Die umgebung ist dev-c++<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6287">@GPC</a><br />
wie kann ich denn die main.cpp und die wieoft.cpp gleichzeitig in einem Schritt kompilieren?<br />
greetz<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936730</guid><dc:creator><![CDATA[Segafredo]]></dc:creator><pubDate>Wed, 07 Dec 2005 17:39:48 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Thu, 08 Dec 2005 08:40:18 GMT]]></title><description><![CDATA[<p>Gar nicht - aus jeder CPP erzeugt der Compiler eine eigene Objektdatei. Und der Linker benötigt dann ALLE relevanten Objektdateien, wenn er das fertige Programm erzeugen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937058</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 08 Dec 2005 08:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Thu, 08 Dec 2005 18:18:51 GMT]]></title><description><![CDATA[<p>Jetzt verstehe ich gar nichts mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /><br />
der eine schreibt, die oben genannte Fehlermeldung besagt, das ich beiden .cpp´s zusammen kompilieren muss, der andere sagt ich das nicht machen soll.<br />
Hmmmm<br />
Leute ihr verwirrt mich.<br />
greetz<br />
Patric++k</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937573</guid><dc:creator><![CDATA[Segafredo]]></dc:creator><pubDate>Thu, 08 Dec 2005 18:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Fri, 09 Dec 2005 07:37:18 GMT]]></title><description><![CDATA[<p>Ich glaube, jetzt habe ich mich sogar selber verwirrt <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>
<p>Also: Der Compiler bearbeitet immer nur eine CPP zur selben Zeit, allerdings kannst du ihm sagen, daß er hintereinander mehrere Dateien compilieren und dann linken soll (Visual Studio macht das afaik selber, dem GCC mußt du die Namen aller Quelldateien als Parameter übergeben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937865</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 09 Dec 2005 07:37:18 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Fri, 09 Dec 2005 09:35:46 GMT]]></title><description><![CDATA[<p>Visual studio merkt gar nix selber ^^</p>
<p>der MS VC++ compiler nutzt genau so make files ... nur natuerlich mit eigener syntax und mit eigenem make (nmake). Wer ja erniedrigend, wenn MS sich an nen Standard halten muesst ^^</p>
<p>Deine IDE's erzeugen in der Regel deine makefiles. Die cpp dateien werden als Quelle in der Projectdatei (fuer jede IDE unnerschiedlich) mit angegeben ... und vorm eigentlichen &quot;compilerlauf&quot; baut die IDE nen Makefile. In dem makefile steht drinne, welche cpp dateien &quot;compileirt&quot; werden sollen ....<br />
Das macht der VS compiler genau so wie das Borland Teil, wie der QT Builder, wie KDevelop, wie devcpp wie Code::Blocks.</p>
<p>beim eigentlichen compileieren wird nur noch das makefile abgearbeitet.<br />
Das was umgangssprachlich als compileieren / uebersetzen bezeichnet wird, sind eigentlich 3 Sachen. der preprozessor, compiler, linker</p>
<p>richtig:<br />
der compiler betrachtet nur eine cpp Datei aufs mal. Aber durch die includes, (job des Preprozessors, die definitionen wirklich in das temp zu compilierende teil mit reinzuschreiben) kennt der compiler an der stelle Klassen, variablen funktionen etc, die nicht in der cpp datei definiert sind ...<br />
Er weiss nur dass es sie gibt. Deshalb generiert er Platzhalter dafuer, die sogenannten Symbole. Das ergebnis ist die obj datei, in der datei liegen quasi die codefragmente als binaercode vor, mit verweisen/symbole auf zeugs was er in der obj datei noch nicht kennen kann.</p>
<p>Zum schluss kommt nu der linker(binder), der nimmt die binaercode fragmente, setzt sie an die richtige stelle, baut den executable header etc zusammen, und ersetzt die Verweise/Symbole durch die richtige Adresse innerhalb des fertigen executables ....<br />
wenn du beispielsweise ne .h datei einbindest, nen object verwendest, aber die dazugehoerige .lib(.a) (iss nur eine (mit ar unter Linux ) komprimierte sammlung von .obj dateien) nicht dazu linkst, kann der linker in der obj datei das symbol nicht aufloesen, und es kommt zu dem beruechtigten &quot;unresolved symbols&quot; meldung.</p>
<p>Hoffe iss einigermassen verstaendlich erklaert ^^ (und viele sache unzulaessig vereinfacht)</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937946</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 09 Dec 2005 09:35:46 GMT</pubDate></item><item><title><![CDATA[Reply to Modul einbinden &amp;gt; Linker error on Fri, 09 Dec 2005 11:52:06 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>Visual studio merkt gar nix selber ^^</p>
<p>der MS VC++ compiler nutzt genau so make files ... nur natuerlich mit eigener syntax und mit eigenem make (nmake). Wer ja erniedrigend, wenn MS sich an nen Standard halten muesst ^^</p>
</blockquote>
<p>Sorry, wenn ich mich zu kurz gefasst habe - was ich mit &quot;Visual Studio macht das selber&quot; meinte, war, daß die IDE sich das nötige Makefile zusammenbaut, um alle benötigten Quelldateien deines Projektes neu compilieren zu könne, wenn es nötig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938047</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 09 Dec 2005 11:52:06 GMT</pubDate></item></channel></rss>