<?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[DLL-Klasse richtig erstellen??]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich versuche nun schon seit längerer Zeit verzweifelt eine Dll die ich selbst erstellt habe sinnvoll zu benutzen. Teilweise geht es auch, aber eben nur teilweise. So ergeben sich beim Arbeiten mit der Dll teilweise recht komische Zugriffsverletzungen. Wenn ich aber dann im dem Projekt, welches die Dll verwendet den eigentlichen Quellcode usw. der DLL hinzufüge geht alles. Daraus schließe ich, dass der Code der DLL eigentlich richtig ist, nur das linken bzw. einbinden der DLL könnte also den Fehler beinhalten. Ich hab’s in groben Zügen so gemacht:</p>
<p>DLL:</p>
<p>dll.h</p>
<p>class __export Dllklasse<br />
{<br />
public:<br />
void Fkt();<br />
}</p>
<p>dll.cpp</p>
<p>void Dllklasse::Fkt()<br />
{<br />
//irgendwas<br />
}</p>
<p>Verwendung:<br />
Im Projekt die LIB einbinden, sowie mit include eine Kopie der dll.h mit allerdings nicht __export sonder __import bei der Klassendeklaration sowie die entstandene dll ins Projektverzeichnis kopieren - Fertig. Natürlich ist alles etwas komplizierter, die Klasse hat wesentlich mehr Methoden usw.<br />
Aber das entscheidende: mit DLL geht es manchmal nicht aber im gleichen Fall ohne Dll dafür aber den entsprechend eingebundenen Quellcode geht’s. Ich vermute es geht nicht so einfach mit __export, aber wie genau richtig??<br />
Borland C++ Builder 5</p>
<p>Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/79619/dll-klasse-richtig-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 03:28:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/79619.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Jul 2004 09:44:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DLL-Klasse richtig erstellen?? on Tue, 13 Jul 2004 09:44:53 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich versuche nun schon seit längerer Zeit verzweifelt eine Dll die ich selbst erstellt habe sinnvoll zu benutzen. Teilweise geht es auch, aber eben nur teilweise. So ergeben sich beim Arbeiten mit der Dll teilweise recht komische Zugriffsverletzungen. Wenn ich aber dann im dem Projekt, welches die Dll verwendet den eigentlichen Quellcode usw. der DLL hinzufüge geht alles. Daraus schließe ich, dass der Code der DLL eigentlich richtig ist, nur das linken bzw. einbinden der DLL könnte also den Fehler beinhalten. Ich hab’s in groben Zügen so gemacht:</p>
<p>DLL:</p>
<p>dll.h</p>
<p>class __export Dllklasse<br />
{<br />
public:<br />
void Fkt();<br />
}</p>
<p>dll.cpp</p>
<p>void Dllklasse::Fkt()<br />
{<br />
//irgendwas<br />
}</p>
<p>Verwendung:<br />
Im Projekt die LIB einbinden, sowie mit include eine Kopie der dll.h mit allerdings nicht __export sonder __import bei der Klassendeklaration sowie die entstandene dll ins Projektverzeichnis kopieren - Fertig. Natürlich ist alles etwas komplizierter, die Klasse hat wesentlich mehr Methoden usw.<br />
Aber das entscheidende: mit DLL geht es manchmal nicht aber im gleichen Fall ohne Dll dafür aber den entsprechend eingebundenen Quellcode geht’s. Ich vermute es geht nicht so einfach mit __export, aber wie genau richtig??<br />
Borland C++ Builder 5</p>
<p>Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/559392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559392</guid><dc:creator><![CDATA[HMarkus]]></dc:creator><pubDate>Tue, 13 Jul 2004 09:44:53 GMT</pubDate></item><item><title><![CDATA[Reply to DLL-Klasse richtig erstellen?? on Tue, 13 Jul 2004 10:11:53 GMT]]></title><description><![CDATA[<p>wenn die klasse keine templates hat reicht der header der klasse.<br />
hat die klasse templates muss die ganze klasse in den header</p>
<p>versuchs mal, obs mit dem header klappt:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
# if defined BUILD_DLL_EXPORTS
#     define DECLSPEC __export
# else
#     define DECLSPEC __import
# endif
class DECLSPEC Dllklasse
{
public:
void Fkt();
};
#ifdef BUILD_DLL_EXPORTS
void Dllklasse::Fkt()
{
    std::cout&lt;&lt;&quot;hallo&quot;;
}
#endif
</code></pre>
<p>wenn das nicht klappt liegts an deinem compiler, wenns klappt, kannste mal versuchen Fkt() in ne cpp auszulagern.</p>
<p>achja, wenn du die dll compilen willst, musst du entweder vor dem includen #define BUILD_DLL_EXPORTS schreiben, oder ein globales define setzen(mehr zu letzteren siehe deine compiler hilfe)<br />
ohne das define ist der header ein __import header</p>
]]></description><link>https://www.c-plusplus.net/forum/post/559396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559396</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Tue, 13 Jul 2004 10:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to DLL-Klasse richtig erstellen?? on Tue, 13 Jul 2004 10:06:43 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=2" rel="nofollow">Borland C++ Builder (VCL/CLX)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" 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/559416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559416</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 13 Jul 2004 10:06:43 GMT</pubDate></item><item><title><![CDATA[Reply to DLL-Klasse richtig erstellen?? on Tue, 13 Jul 2004 11:24:34 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Gott sei Dank, Problem gefunden!<br />
Es lag nicht an der __import __export oder dergleichen, sondern die Klasse hatte keine Zuweisungsoperator und Kopierkonstruktor implementiert. Warum es jetzt genau daran lag kann ich auch nicht sagen, als ich aber die implementiert hatte funktionierte alles. Der Kopierkonstuktor wird ja oft indirekt aufgerufen. Aber naja... <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>Jetzt geht es auf jeden Fall! Danke trotz dem!!</p>
<p>Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/559503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559503</guid><dc:creator><![CDATA[HMarkus]]></dc:creator><pubDate>Tue, 13 Jul 2004 11:24:34 GMT</pubDate></item></channel></rss>