<?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[Modularisierung von Projekten]]></title><description><![CDATA[<p>Hallo,</p>
<p>seit einiger Zeit programmiere ich an einem kleinen Projekt, das jetzt aber langsam unübersichtlich wird. Wie modularisiert man nun das Projekt am Besten. Im Visual Studio 2005 kann man ja COM-dlls erzeugen die einfach einem Projekt eingebunden werden können. Gibt es hier für den Builder auch ein Konzept. Mit dlls wird das ganze glaub ich ein wenig umständlich und außerdem bin ich mir nicht sicher, ob es gut ist Klassen in eine gewöhnliche dll zu schreiben.</p>
<p>sg mattias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/121889/modularisierung-von-projekten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 15:02:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/121889.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Sep 2005 12:17:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 12:17:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>seit einiger Zeit programmiere ich an einem kleinen Projekt, das jetzt aber langsam unübersichtlich wird. Wie modularisiert man nun das Projekt am Besten. Im Visual Studio 2005 kann man ja COM-dlls erzeugen die einfach einem Projekt eingebunden werden können. Gibt es hier für den Builder auch ein Konzept. Mit dlls wird das ganze glaub ich ein wenig umständlich und außerdem bin ich mir nicht sicher, ob es gut ist Klassen in eine gewöhnliche dll zu schreiben.</p>
<p>sg mattias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882075</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Wed, 28 Sep 2005 12:17:33 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 12:22:29 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du kannst schon Klassen in DLLs schreiben, aber dann kann meistens diese DLL nur noch vom Builder verwendet werden.<br />
<a href="http://bcb-tutorial.c-plusplus.net/inhalt.html" rel="nofollow">Hier</a> im Forum-eigenem Builder-Tutorial steht wie du DLL erstellst und anwendest.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882080</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 28 Sep 2005 12:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 14:03:12 GMT]]></title><description><![CDATA[<p>Ich hab mir das Tutorial angeschaut, aber nichts gefunden, um Klassen aus einer DLL zu verwenden. Hat jemand noch einen Link zu einem Tutorial oder ein Beispiel, das er hier posten kann. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882181</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Wed, 28 Sep 2005 14:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 14:44:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Hier ist noch ein Tutorial<br />
<a href="http://fatman98.fa.funpic.de/builder_dll.php" rel="nofollow">http://fatman98.fa.funpic.de/builder_dll.php</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/882233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882233</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 28 Sep 2005 14:44:24 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 15:44:28 GMT]]></title><description><![CDATA[<p>Danke für die Posts. Ich hab jetzt ein Testprogramm geschrieben das leider nicht funktioniert. Hier ist der Code.</p>
<p>Eine DLL mit der cpp:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#include &lt;windows.h&gt;
#pragma hdrstop
#include &quot;dll.h&quot;

#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
   return 1;
}
//---------------------------------------------------------------------------

void DLLTest::Draw() {
}
</code></pre>
<p>und dem Header:</p>
<pre><code class="language-cpp">#ifndef _DLL_H
#define _DLL_H

#ifdef __DLL__
# define DLL_EXP __declspec(dllexport)
#else
# define DLL_EXP __declspec(dllimport)
#endif

class DLL_EXP DLLTest
{
public:
   DLLTest();
   ~DLLTest();

   void Draw();
};
#endif // _DLL_H
</code></pre>
<p>Das Programm das die DLL nutzt hat den Code:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Main.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   DLLTest *myDll = new DLLTest;
}
//---------------------------------------------------------------------------
</code></pre>
<p>und den Header:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#ifndef MainH
#define MainH
//---------------------------------------------------------------------------
#include &lt;Classes.hpp&gt;
#include &lt;Controls.hpp&gt;
#include &lt;StdCtrls.hpp&gt;
#include &lt;Forms.hpp&gt;

#include &quot;dll.h&quot;

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
   TButton *Button1;
   void __fastcall Button1Click(TObject *Sender);
private:	// Anwender-Deklarationen
public:		// Anwender-Deklarationen
   __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
</code></pre>
<p>Als Fehler bekomme ich:<br />
[Linker Fehler] Unresolved external 'DLLTest::~DLLTest()' referenced from C:\PROGRAMME\BORLAND\CBUILDER6\PROJECTS\DLLCLASS\MAIN.OBJ<br />
[Linker Fehler] Unresolved external 'DLLTest::DLLTest()' referenced from C:\PROGRAMME\BORLAND\CBUILDER6\PROJECTS\DLLCLASS\MAIN.OBJ</p>
<p>Die .lib Datei habe ich aber dem Main Projekt hinzugefügt.</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882295</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Wed, 28 Sep 2005 15:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 15:49:06 GMT]]></title><description><![CDATA[<p>Wo sind denn die Definitionen vom Konstruktor und Destruktor von DLLTest?<br />
Füg doch da mal einen Funktionsrumpf hinzu.<br />
Ich würde auch die Definitionen deiner Klasse lieber in eine separate cpp packen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882300</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 28 Sep 2005 15:49:06 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 15:54:57 GMT]]></title><description><![CDATA[<p>Tja, das war der Grund. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882305</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Wed, 28 Sep 2005 15:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 16:56:03 GMT]]></title><description><![CDATA[<p>Eine Frage hab ich noch. Und zwar wenn man mehrere Klassen in eine DLL packt, muss dann in jeder Klasse die Definition:</p>
<pre><code class="language-cpp">#pragma argsused 
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved) 
{ 
   return 1; 
}
</code></pre>
<p>stehen, oder genügt das in einer. Für was benötige ich diese eigentlich, ich erzeuge ja nicht explizit eine Instanzhandle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882347</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Wed, 28 Sep 2005 16:56:03 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Wed, 28 Sep 2005 16:59:44 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>diese Funktion muß genau einmal in der DLL auftauchen.<br />
Das wird zum Initialisieren der DLL ausgeführt, ist sozusagen der Einspringpunkt wie das int Main() in Programmen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882353</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 28 Sep 2005 16:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Thu, 29 Sep 2005 11:12:21 GMT]]></title><description><![CDATA[<p>Wie kann ich eine Klasse aus einer DLL in einer anderen DLL verwenden, auf beiden Seiten, d.h. jeweils eine Variable einer Klasse aus der anderen DLL.</p>
<pre><code class="language-cpp">#include &quot;TestDLL.h&quot;

class TestDLL;

class DLL_EXP DLLTest
{
public:
   DLLTest();
   ~DLLTest();

   TestDLL myTest;

   void Draw();
};

#include &quot;DLLTest.h&quot;

class DLLTest;

class DLL_EXP TestDLL
{
public:
   TestDLL();
   ~TestDLL();

   DLLTest myTest;

   void Draw();
};
</code></pre>
<p>Einseitig funtionierts. So bekomme ich den Fehler:<br />
[C++ Fehler] DLLTest.h(20): E2450 Undefinierte Struktur 'TestDLL'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882838</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Thu, 29 Sep 2005 11:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Thu, 29 Sep 2005 11:15:36 GMT]]></title><description><![CDATA[<p>Wenn die Klassen sich gegenseitig brauchen, wäre es vernünftig beide Klassen in eine dll zu packen. Wenn du jede Klasse in eine eigene dll packst, fördert das die Übersicht auch nicht gerade.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882839</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 29 Sep 2005 11:15:36 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Thu, 29 Sep 2005 11:32:05 GMT]]></title><description><![CDATA[<p>In dem Beispiel sinds nur zwei Klassen, aber in meinem Projekt sinds natürlich mehr. Dort habe ich aber gerade das Problem, ich möchte aber die Klassen nach Funktionalität trennen. Gibts hierfür keine Lösung, außer alles in eine DLL zu packen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882866</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Thu, 29 Sep 2005 11:32:05 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Thu, 29 Sep 2005 11:35:52 GMT]]></title><description><![CDATA[<p>Klassen die sehr unterschiedliche Funktionen haben kann man schon in separate dlls stecken. Klassen die sich gegenseitig inkludieren gehören aber eigentlich nicht in diese Kategorie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882869</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 29 Sep 2005 11:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Thu, 29 Sep 2005 11:58:59 GMT]]></title><description><![CDATA[<p>Eigentlich inkludieren sie sich nicht richtig, ich muss nur Ergebnisse hin und her geben. Wie sollte man das sonst machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882894</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Thu, 29 Sep 2005 11:58:59 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Thu, 29 Sep 2005 12:05:37 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Der Austausch kann über ein Interface, wie eine dritte gemeinsame Klasse gemacht werden. Wichtig ist nur das es kein Circular Including gibt.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/882898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/882898</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 29 Sep 2005 12:05:37 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Thu, 29 Sep 2005 18:03:40 GMT]]></title><description><![CDATA[<p>Allgemeine Frage: Sollte man generell alle Klassen im Header-File deklarieren? Ich habe manchmal das Gefühl den Überblick zu verlieren, wenn ich hier deklariere und dort benutze. Hat jemand einen Tip für die Praxis? Lauter Units- und Header Files oder ein langes Unit? Beim BCB5 kann man ja nicht Codeteile auf- und zuklappen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883141</guid><dc:creator><![CDATA[helmuth]]></dc:creator><pubDate>Thu, 29 Sep 2005 18:03:40 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Thu, 29 Sep 2005 18:09:47 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>eine Aufteilung ist schon besser. Zum einen wird ja gerade deshalb der Code übersichtlicher, weil du eine getrennte Übersucht über die Definition der Klasse und deren Implementaion hast. Gerade wenn du mit mehreren Leuten an einen Projekt arbeitest oder eine Bibliothek für mehrere Projekte erstellst, willst du nämlich gar nicht wissen wie die einzelnen Teile einer Klasse implementiert sind, sondern einfach die Definition.<br />
Außerdem ist es von der Compilezeit besser. Denn wenn du die Implementaion einer Klasse bei getrennten Datein änderst, muß nur diese neu kompiliert werden.</p>
<p>Für die Übersicht kannst du ja den ClassExplorer benutzen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883143</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 29 Sep 2005 18:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to Modularisierung von Projekten on Fri, 30 Sep 2005 09:21:35 GMT]]></title><description><![CDATA[<p>Danke noch mal für die Tipps. Ich habe jetzt einigen Klassen ein Interface hinzugefügt, was das Ganze auch übersichtlicher macht.</p>
<p>Das gegenseitige Inkludieren funktioniert aber schon, ich habe nur beim Kopieren übersehen dass bei manchen Variablen keinen Pointer verwendet habe, wodurch der Compiler natürlich ein Problem bekommt, wenn er den Speicher resevieren will, aber noch nicht weiss wie die Klasse definiert ist.</p>
<p>Nochmals Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883424</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Fri, 30 Sep 2005 09:21:35 GMT</pubDate></item></channel></rss>