<?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[wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln?]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich habe hier eine Aufgabe, in der es darum geht, dass 2 getrennte Programme eine selbst erstellte Bibliothek nutzen sollen. Es geht ums visual Studio</p>
<p>Zur Entwicklung habe ich zunächst alles in der Hauptdatei (PerIn.cpp) belassen.</p>
<p>Die ist so aufgebaut:</p>
<p>-#include's<br />
-prototypen<br />
-prototypen definieren (unterprogramme)<br />
-main()</p>
<p>Es gibt noch eine perDef.h mit Variablendefinitionen.</p>
<p>nun sollen die Unterprogramme in eine .h/.cpp-Bibliothek. Drum habe ich folgendes gemacht:</p>
<p>-die Prototypen in die Datei namens &quot;PerIO.h&quot; gepackt<br />
-die Unterprogramme in eine Datei namens &quot;PerIO.cpp&quot; gepackt. Dort noch die von den Unterprogrammen gebrauchten includes und stdafx.h eingebunden.<br />
-main() und die includes in der Hauptdatei zurückgelassen.<br />
-in der Hauptdatei, da habe ich die PerIO.h eingebunden. Diese hab ich mit #ifndef vor doppelt einbinden geschützt.</p>
<p>dann bekomme ich das hier zu lesen:</p>
<p>PerIO.obj : error LNK2005: &quot;void __cdecl clreol(int)&quot; (?clreol@@YAXH@Z) ist bereits in in.obj definiert.<br />
1&gt;PerIO.obj : error LNK2005: &quot;void __cdecl clreol(int)&quot; (?clreol@@$$FYAXH@Z) ist bereits in in.obj definiert.<br />
1&gt;C:\pa1\in\Debug\in.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.</p>
<p>perdef.h (war fertig bei der Aufgabe mit dabei):</p>
<pre><code class="language-cpp">#ifndef PerDef_Is_Included                      // Steuerung bedingtes include
  #define PerDef_Is_Included

  ..... variablendefinitionen und konstanten ....

#endif
</code></pre>
<p>perIO.h</p>
<pre><code class="language-cpp">#include &quot;vsconio.h&quot;    
#include &quot;stdafx.h&quot;
#include &quot;perdef.h&quot;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

#ifndef PERIO_H                                /* Doppelinclude verhindern */
#define PERIO_H

...prototypen....

#endif
</code></pre>
<p>perio.cpp</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;perDef.h&quot;     
#include &quot;vsconio.h&quot;    
//#include &quot;perio.h&quot;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

#ifndef perio_c
#define perio_c

.....unterprogramme....

#endif
</code></pre>
<p>perin.cpp</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;perDef.h&quot;     
#include &quot;vsconio.h&quot;    
#include &quot;perio.h&quot;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

int main(void) { 
  ... 
}
</code></pre>
<p>vsconio.h (war auch bei der Aufgabe mit dabei)</p>
<pre><code class="language-cpp">using namespace System;     // Zugriff auf den Namensbereich &quot;System&quot; -&gt; Console

#include &lt;stdio.h&gt;          // C Standard-IO

#ifndef _VS_conio_h_
#define _VS_conio_h_

  #define clrscr()      Console::Clear()
  #define gotoxy(x,y)   Console::SetCursorPosition((x-1),(y-1))
  #define wherex()      (Console::CursorLeft+1)
  #define wherey()      (Console::CursorTop+1)

  void clreol(int xe = 79) {  // aktuelle Zeile: Spalten xakt bis xe(79) löschen
    int xr, xa = wherex();
    for( xr = xa; xr &lt;= xe; xr++ ) printf(&quot; &quot;); 
    gotoxy(xa, wherey());
  } // clreol()

#endif
// end of file vsconio.h
</code></pre>
<p>Was mache ich falsch <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/260586/wie-kann-ich-einzelne-cpp-und-h-zum-fertigen-programm-zusammenfrickeln</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 23:40:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260586.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Feb 2010 14:05:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Sun, 07 Feb 2010 14:08:24 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich habe hier eine Aufgabe, in der es darum geht, dass 2 getrennte Programme eine selbst erstellte Bibliothek nutzen sollen. Es geht ums visual Studio</p>
<p>Zur Entwicklung habe ich zunächst alles in der Hauptdatei (PerIn.cpp) belassen.</p>
<p>Die ist so aufgebaut:</p>
<p>-#include's<br />
-prototypen<br />
-prototypen definieren (unterprogramme)<br />
-main()</p>
<p>Es gibt noch eine perDef.h mit Variablendefinitionen.</p>
<p>nun sollen die Unterprogramme in eine .h/.cpp-Bibliothek. Drum habe ich folgendes gemacht:</p>
<p>-die Prototypen in die Datei namens &quot;PerIO.h&quot; gepackt<br />
-die Unterprogramme in eine Datei namens &quot;PerIO.cpp&quot; gepackt. Dort noch die von den Unterprogrammen gebrauchten includes und stdafx.h eingebunden.<br />
-main() und die includes in der Hauptdatei zurückgelassen.<br />
-in der Hauptdatei, da habe ich die PerIO.h eingebunden. Diese hab ich mit #ifndef vor doppelt einbinden geschützt.</p>
<p>dann bekomme ich das hier zu lesen:</p>
<p>PerIO.obj : error LNK2005: &quot;void __cdecl clreol(int)&quot; (?clreol@@YAXH@Z) ist bereits in in.obj definiert.<br />
1&gt;PerIO.obj : error LNK2005: &quot;void __cdecl clreol(int)&quot; (?clreol@@$$FYAXH@Z) ist bereits in in.obj definiert.<br />
1&gt;C:\pa1\in\Debug\in.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.</p>
<p>perdef.h (war fertig bei der Aufgabe mit dabei):</p>
<pre><code class="language-cpp">#ifndef PerDef_Is_Included                      // Steuerung bedingtes include
  #define PerDef_Is_Included

  ..... variablendefinitionen und konstanten ....

#endif
</code></pre>
<p>perIO.h</p>
<pre><code class="language-cpp">#include &quot;vsconio.h&quot;    
#include &quot;stdafx.h&quot;
#include &quot;perdef.h&quot;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

#ifndef PERIO_H                                /* Doppelinclude verhindern */
#define PERIO_H

...prototypen....

#endif
</code></pre>
<p>perio.cpp</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;perDef.h&quot;     
#include &quot;vsconio.h&quot;    
//#include &quot;perio.h&quot;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

#ifndef perio_c
#define perio_c

.....unterprogramme....

#endif
</code></pre>
<p>perin.cpp</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;perDef.h&quot;     
#include &quot;vsconio.h&quot;    
#include &quot;perio.h&quot;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

int main(void) { 
  ... 
}
</code></pre>
<p>vsconio.h (war auch bei der Aufgabe mit dabei)</p>
<pre><code class="language-cpp">using namespace System;     // Zugriff auf den Namensbereich &quot;System&quot; -&gt; Console

#include &lt;stdio.h&gt;          // C Standard-IO

#ifndef _VS_conio_h_
#define _VS_conio_h_

  #define clrscr()      Console::Clear()
  #define gotoxy(x,y)   Console::SetCursorPosition((x-1),(y-1))
  #define wherex()      (Console::CursorLeft+1)
  #define wherey()      (Console::CursorTop+1)

  void clreol(int xe = 79) {  // aktuelle Zeile: Spalten xakt bis xe(79) löschen
    int xr, xa = wherex();
    for( xr = xa; xr &lt;= xe; xr++ ) printf(&quot; &quot;); 
    gotoxy(xa, wherey());
  } // clreol()

#endif
// end of file vsconio.h
</code></pre>
<p>Was mache ich falsch <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1851879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851879</guid><dc:creator><![CDATA[Franky666]]></dc:creator><pubDate>Sun, 07 Feb 2010 14:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Sun, 07 Feb 2010 14:50:03 GMT]]></title><description><![CDATA[<p>Warum gibst du deinem C-Quelltext die Endung .cpp?</p>
<p>MfG f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851910</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Sun, 07 Feb 2010 14:50:03 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Sun, 07 Feb 2010 14:59:45 GMT]]></title><description><![CDATA[<p>Weil es so vorgegeben wird <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/1851918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851918</guid><dc:creator><![CDATA[Franky666]]></dc:creator><pubDate>Sun, 07 Feb 2010 14:59:45 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Sun, 07 Feb 2010 15:05:32 GMT]]></title><description><![CDATA[<p>Franky666 schrieb:</p>
<blockquote>
<p>Weil es so vorgegeben wird <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>das ist aber käse!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851924</guid><dc:creator><![CDATA[käse detecotr]]></dc:creator><pubDate>Sun, 07 Feb 2010 15:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Sun, 07 Feb 2010 15:08:39 GMT]]></title><description><![CDATA[<p>ist das nicht egal? Entscheidend ist das, was da drinne is.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851925</guid><dc:creator><![CDATA[Franky666]]></dc:creator><pubDate>Sun, 07 Feb 2010 15:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Sun, 07 Feb 2010 15:13:33 GMT]]></title><description><![CDATA[<p>Franky666 schrieb:</p>
<blockquote>
<p>ist das nicht egal? Entscheidend ist das, was da drinne is.</p>
</blockquote>
<p>nein. Weil viele IDEs Dateien mit Endung .cpp automatsich als C++ betrachten und durch den C++ Compiler jagen. C != C++</p>
<p>außerdem</p>
<pre><code class="language-cpp">using namespace System;     // Zugriff auf den Namensbereich &quot;System&quot; -&gt; Console
....
 #define clrscr()      Console::Clear()
  #define gotoxy(x,y)   Console::SetCursorPosition((x-1),(y-1))
  #define wherex()      (Console::CursorLeft+1)
  #define wherey()      (Console::CursorTop+1)
</code></pre>
<p>ist definitiv kein C sondern C++</p>
<p>igit, wer schreibt denn so eine schreckliche Mischung aus Äpfel und Kartofeln? Wo hast du das her?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851930</guid><dc:creator><![CDATA[supertux]]></dc:creator><pubDate>Sun, 07 Feb 2010 15:13:33 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Sun, 07 Feb 2010 15:26:37 GMT]]></title><description><![CDATA[<p>Das ist auch kein C++, sondern C++/CLI.</p>
<p>Wie dem auch sei, der Fehler liegt in der vsconio.h - clreol wird darin nicht nur deklariert, sondern auch definiert, so dass der Header nur in einer Übersetzungseinheit eingebunden werden kann. Wer hat das Ding eigentlich geschrieben? Ist ja fürchterlich.</p>
<p>Die einfachste Lösung (wenn das in C++/CLI von C++ her nicht verändert wurde) wird sein, den Header wie folgt umzuschreiben:</p>
<pre><code class="language-cpp">using namespace System;

#include &lt;stdio.h&gt;

#ifndef _VS_conio_h_
#define _VS_conio_h_

  #define clrscr()      Console::Clear()
  #define gotoxy(x,y)   Console::SetCursorPosition((x-1),(y-1))
  #define wherex()      (Console::CursorLeft+1)
  #define wherey()      (Console::CursorTop+1)

  inline /* &lt;-- HIER */ void clreol(int xe = 79) {
    int xr, xa = wherex();
    for( xr = xa; xr &lt;= xe; xr++ ) printf(&quot; &quot;);
    gotoxy(xa, wherey());
  }

#endif
</code></pre>
<p>Mittelfristig würde ich mich aber an deiner Stelle nach einer sinnvolleren Quelle von Übungsaufgaben umsehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851942</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 07 Feb 2010 15:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Sun, 07 Feb 2010 16:34:35 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-10.html" rel="nofollow">ANSI C</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851965</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sun, 07 Feb 2010 16:34:35 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Mon, 08 Feb 2010 15:51:38 GMT]]></title><description><![CDATA[<p>Eigentlich hab ich die vsconio.h der Vollständigkeit halber hier gepostet, damit keiner fragt &quot;was ist das für ein include?&quot;. Gut das ich das gemacht hab.</p>
<p>Die inlude-Datei ist wahrlich von unserem Professor (irgendwie von Pascal nach C portiert, weils in C das nicht gibt) und ich hab sie unverändert reingesetzt. Ich hab sie mir eigentlich gar nicht so genau angeguckt, weil ich eh nur clrscr() davon brauche. Aber da suche ich mir lieber ner Alternative und nehme das Incluce raus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> .....</p>
<p>Bin auch nicht auf die Idee gekommen, dort nach dem Fehler zu suchen. Aber jetzt sehen ich das selber...</p>
<p>Danke. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Man kann doch sicher irgendwie ganz einfach ohne diese vsconio.h die Konsole löschen, oder?</p>
<p>Scheinbar bekommen wir c und c++ wirklich gemischt beigepult. dann ist es ja vielleicht besser, die cpp-dateien so zu lassen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1852536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852536</guid><dc:creator><![CDATA[Franky666]]></dc:creator><pubDate>Mon, 08 Feb 2010 15:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Mon, 08 Feb 2010 16:24:07 GMT]]></title><description><![CDATA[<p>Mies!</p>
<pre><code class="language-cpp">system(&quot;cls&quot;);
</code></pre>
<p>Funktioniert nur auf Windows und ich weiß nicht was dein Prof. dazu sagt. Ich denke, die STL bietet da eine bessere Lösung.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852549</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Mon, 08 Feb 2010 16:24:07 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Mon, 08 Feb 2010 17:22:36 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Funktioniert nur auf Windows und ich weiß nicht was dein Prof. dazu sagt. Ich denke, die STL bietet da eine bessere Lösung.</p>
</blockquote>
<p>Nicht dass ich wüßte. Aber das gehört in eine Funktion ausgelagert, die entsprechend cls oder clear benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852579</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 08 Feb 2010 17:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to wie kann ich einzelne .cpp und .h zum fertigen Programm zusammenfrickeln? on Mon, 08 Feb 2010 17:26:18 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Ich denke, die STL bietet da eine bessere Lösung.</p>
</blockquote>
<p>Mit Sicherheit nicht. Erstens, die STL (= Container, Iteratoren, Algorithmen) sowieso nicht. Zweitens, die Standardbibliothek ansonsten auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852581</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 08 Feb 2010 17:26:18 GMT</pubDate></item></channel></rss>