<?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[Projekt mit mehreren Dateien]]></title><description><![CDATA[<p>hi</p>
<p>ich benutze code::blocks.</p>
<p>bisher hab ich c-programme immer nur in einer datei entwickelt. jetzt würd ich den code mal aufteilen wollen, aber es geht nicht. das programm lässt sich nicht kompilieren.</p>
<p>habe 2 dateien: main.cpp (mit der mainfunktion) und die neu angelegte test.cpp (beide sind im source-ordner in code::blocks</p>
<p>inhalt der test.cpp:</p>
<pre><code class="language-cpp">namespace test
{
int truely()
{
    return 42;
}
};
</code></pre>
<p>jetzt möchte ich die funktion benutzen in der main:</p>
<pre><code class="language-cpp">int test::truely();

...

printf(&quot;%d\n&quot;,test::truely());
</code></pre>
<p>ich bekomm jedesmal &quot; 'test' has not been declared&quot; und &quot; 'truely' was not declared in this scope&quot;</p>
<p>jetzt weiß ich (zumindest denk ich mir das so), wird jede quellcode-datei in seine eigene *.o kompiliert, die dann mittels linker zur ausgabe zusammengefügt werden (korrigiert mich wenn ich falsch liege).<br />
aber irgendwas fehlt noch. ich hab das gefühl ich muss dem irgendwie noch sagen (wenn er die main kompiliert), dass es die test.o gibt die er berücksichtigen muss.<br />
ich bin n bischen verwirrt. kann mich da einer aufklären?</p>
<p>und wo wir grad dabei sind: dynamische bibliotheken. korrektes erstellen, verlinken und nutzen. das muss ich auch noch wissen. mit möglichst vielen details (z.b. will ich mittels singleton-pattern eine variable halten in einer dll. geht das überhaupt?)</p>
<p>vielen dank für eure hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266203/projekt-mit-mehreren-dateien</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 09:14:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266203.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 May 2010 13:34:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Wed, 05 May 2010 13:34:58 GMT]]></title><description><![CDATA[<p>hi</p>
<p>ich benutze code::blocks.</p>
<p>bisher hab ich c-programme immer nur in einer datei entwickelt. jetzt würd ich den code mal aufteilen wollen, aber es geht nicht. das programm lässt sich nicht kompilieren.</p>
<p>habe 2 dateien: main.cpp (mit der mainfunktion) und die neu angelegte test.cpp (beide sind im source-ordner in code::blocks</p>
<p>inhalt der test.cpp:</p>
<pre><code class="language-cpp">namespace test
{
int truely()
{
    return 42;
}
};
</code></pre>
<p>jetzt möchte ich die funktion benutzen in der main:</p>
<pre><code class="language-cpp">int test::truely();

...

printf(&quot;%d\n&quot;,test::truely());
</code></pre>
<p>ich bekomm jedesmal &quot; 'test' has not been declared&quot; und &quot; 'truely' was not declared in this scope&quot;</p>
<p>jetzt weiß ich (zumindest denk ich mir das so), wird jede quellcode-datei in seine eigene *.o kompiliert, die dann mittels linker zur ausgabe zusammengefügt werden (korrigiert mich wenn ich falsch liege).<br />
aber irgendwas fehlt noch. ich hab das gefühl ich muss dem irgendwie noch sagen (wenn er die main kompiliert), dass es die test.o gibt die er berücksichtigen muss.<br />
ich bin n bischen verwirrt. kann mich da einer aufklären?</p>
<p>und wo wir grad dabei sind: dynamische bibliotheken. korrektes erstellen, verlinken und nutzen. das muss ich auch noch wissen. mit möglichst vielen details (z.b. will ich mittels singleton-pattern eine variable halten in einer dll. geht das überhaupt?)</p>
<p>vielen dank für eure hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892756</guid><dc:creator><![CDATA[DanielJackson88]]></dc:creator><pubDate>Wed, 05 May 2010 13:34:58 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Wed, 05 May 2010 13:42:47 GMT]]></title><description><![CDATA[<p>Die Headerdatei sollte so aussehen:</p>
<pre><code class="language-cpp">namespace test
{
int truely();
}
</code></pre>
<pre><code class="language-cpp">aber irgendwas fehlt noch. ich hab das gefühl ich muss dem irgendwie noch sagen (wenn er die main kompiliert), dass es die test.o gibt die er berücksichtigen muss.
ich bin n bischen verwirrt. kann mich da einer aufklären?
</code></pre>
<p>Das machst du mit forward declarations. Damit sagst du dem Compiler, dass die Funktion irgendwo anders existiert. Der Linker findet später heraus, wo genau.<br />
Diese Sammlung an forward declarations kommt üblicherweise in eine Headerdatei (test.h), die du in main.cpp einbindest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892760</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 05 May 2010 13:42:47 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Wed, 05 May 2010 14:01:32 GMT]]></title><description><![CDATA[<p>Hallo,<br />
dein Hauptprogramm sollte so aussehen:</p>
<pre><code class="language-cpp">#include&quot;truely.h&quot;

int main(int argc,char* argv)
{
   test::truely();
return 0;
}
</code></pre>
<p>Die Headerdatei so:</p>
<pre><code class="language-cpp">#ifndef TRUELY_H_
#define TRUELY_H_
// Das sind die Inclusionguards, die verhindern, dass du den header mehrfach //einbindest (zusammen mit dem #endif)
namespace test // hoffe mal, das ist richtig

int truely();

#endif
</code></pre>
<p>und die Quelldatei so:</p>
<pre><code class="language-cpp">#include&quot;truely.h&quot;

int test::truely()
{
   return 42;
}
</code></pre>
<p>Mit namespace hab ich bis jetzt nicht groß rumjonglieren müssen, aber das kommt natürlich darauf an, was du damit machen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892769</guid><dc:creator><![CDATA[m.]]></dc:creator><pubDate>Wed, 05 May 2010 14:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Thu, 06 May 2010 06:27:30 GMT]]></title><description><![CDATA[<p>danke euch beiden!</p>
<p>athar hat bereits dafür gesorgt, dass mir ein licht aufgegangen ist <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>bleibt noch folgendes zu klären:</p>
<blockquote>
<p>und wo wir grad dabei sind: dynamische bibliotheken. korrektes erstellen, verlinken und nutzen. das muss ich auch noch wissen. mit möglichst vielen details (z.b. will ich mittels singleton-pattern eine variable halten in einer dll. geht das überhaupt?)</p>
</blockquote>
<p>zu meinen absichten: ich habe (erstmal) vor eine kleine (dynamische) bibliothek zu entwickeln, die ich später in einem größeren programm nutzn und parallel dazu weiterentwickeln möchte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893124</guid><dc:creator><![CDATA[DanielJackson88]]></dc:creator><pubDate>Thu, 06 May 2010 06:27:30 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Thu, 06 May 2010 08:22:52 GMT]]></title><description><![CDATA[<p>m. schrieb:</p>
<blockquote>
<p>...hoffe mal, das ist richtig...</p>
</blockquote>
<p>Nicht ganz, der Namensraum muss die Funktion umschließen. Hier mal etwas anders:</p>
<pre><code class="language-cpp">// main.cpp
#include &quot;truely.h&quot;

int main()
{
    test::truely();
}
</code></pre>
<pre><code class="language-cpp">// truely.h, Ich habe mal den Namensraum in den Includeguard eingebaut.
#ifndef TEST__TRUELY__HEADER
#define TEST__TRUELY__HEADER

namespace test
{
    int truely();
}

#endif
</code></pre>
<pre><code class="language-cpp">// truely.cpp
#include&quot;truely.h&quot;

using namespace test; // Alternativ wie im Header

int truely()
{
   return 42;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1893163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893163</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 06 May 2010 08:22:52 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Thu, 06 May 2010 08:26:11 GMT]]></title><description><![CDATA[<p>DanielJackson88 schrieb:</p>
<blockquote>
<p>zu meinen absichten: ich habe (erstmal) vor eine kleine (dynamische) bibliothek zu entwickeln, die ich später in einem größeren programm nutzn und parallel dazu weiterentwickeln möchte</p>
</blockquote>
<p>Du solltest dabei nur Wissen, das keine Klassen ohne berücksichtig gewisser Einschränkungen über DLL-Grenzen hinweg austauschbar sind (Nach eigener Erfahrung, auch wenn mir jemand wiedersprochen hat, ist die DLL dann ggf. von der Compilerversion abhängig). DLLs gehören nicht zum C++ Standard, mit allen Konsequenzen daraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893164</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 06 May 2010 08:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Thu, 06 May 2010 08:40:21 GMT]]></title><description><![CDATA[<p>gut, wenn das nicht so der optimalfall ist, wie kann ich dann c++ klassen am besten austauschen und mein programm besser modularisieren? statische bibliotheken?</p>
<p>das ist so mein hauptproblem: ein teil der hardware-grundlagen und der konzeptionelle aufbau von größeren programmen.<br />
wie man z.b. externe bibliotheken (eben als dll) einbindet, nutzt und das ganze dann wieder als bibliothek kompiliert und dass dann wieder woanders einbinden kann...<br />
wäre auch schön, wenn da jemand ein literaturhinweis geben kann. also ein buch oder kapitel eines buches, welches sich genau damit befasst (bitte nicht die bücher auflisten die ihr kennt, sondern wirklich nur die, die sich damit auch befassen. bin gewillt mich da zu vertiefen, aber wenn man sich erst durch millionen wälzer kämpfen muss um bei der wichtigen information anzukommen verliert man das interesse).</p>
<p>vielen dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893171</guid><dc:creator><![CDATA[DanielJackson88]]></dc:creator><pubDate>Thu, 06 May 2010 08:40:21 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Thu, 06 May 2010 08:52:42 GMT]]></title><description><![CDATA[<p>DanielJackson88 schrieb:</p>
<blockquote>
<p>wäre auch schön, wenn da jemand ein literaturhinweis geben kann. also ein buch oder kapitel eines buches, welches sich genau damit befasst</p>
</blockquote>
<p>Sofern ich mich nicht irre, wird auf die Möglichkeit wie man Klassen über DLL-Grenzen übergeben kann in &quot;Large-Scale C++ Software Design&quot; (Addison Wesley) eingegangen (Kann ich aber derzeit nicht nachtesten, ich besitze zwar das Buch, habe aber das Buch aber relativ schnell wegen anderen Themen zur Seite gelegt.</p>
<p>Mein eigenes Wissen dazu ist schon älter und kann daher überholt sein (Letzter Test war unter Visual C++ 6.0 und Power++ 2.5), damals bin ich nach einer Beschreibung aus dem Internet gegangen, was aber im Endeffekt in dieser Compilerkonstellation nicht funktioniert hatte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893175</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 06 May 2010 08:52:42 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Thu, 06 May 2010 13:46:58 GMT]]></title><description><![CDATA[<p>Eventuell ist ja auch eine Scriptsprache wie Lua für dich interessant. Damit kannst du dein Programm auch erweiterbar gestalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893324</guid><dc:creator><![CDATA[ghjghjghj]]></dc:creator><pubDate>Thu, 06 May 2010 13:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to Projekt mit mehreren Dateien on Thu, 06 May 2010 15:22:43 GMT]]></title><description><![CDATA[<p>ghjghjghj schrieb:</p>
<blockquote>
<p>Eventuell ist ja auch eine Scriptsprache wie Lua für dich interessant. Damit kannst du dein Programm auch erweiterbar gestalten.</p>
</blockquote>
<p>Ich persönliche nutze als Scriptengine Angelscript. Ist objektorientiert von haus aus und die Syntax ist C++ like.<br />
rya.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893369</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 06 May 2010 15:22:43 GMT</pubDate></item></channel></rss>