<?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[Klasse aus einer DLL über .def exportieren]]></title><description><![CDATA[<p>Wie kann ich eine Klasse aus der DLL exportiren?</p>
<p>Für Variablen und Funktionen habe ich das geschafft.<br />
Nur wenn ich den Klassenbezeichner in die .def-Datei eintrage bekomme ich einen Linkerfehler.</p>
<p>.h</p>
<pre><code class="language-cpp">#ifdef VC6DLL_EXPORTS
#define VC6DLL_API __declspec(dllexport)
#else
#define VC6DLL_API __declspec(dllimport)
#endif

// Diese Klasse ist aus vc6dll.dll exportiert
class VC6DLL_API CVc6dll {
public:
	CVc6dll(void);
	// ZU ERLEDIGEN: Fügen Sie hier Ihre Methoden hinzu.
};

extern VC6DLL_API int nVc6dll;

VC6DLL_API int fnVc6dll(void);
</code></pre>
<p>.cpp</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &quot;vc6dll.h&quot;

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}

// Dies ist ein Beispiel für eine exportierte Variable
VC6DLL_API int nVc6dll=1234;

// Dies ist ein Beispiel für eine exportierte Funktion.
VC6DLL_API int fnVc6dll(void)
{
	return 42;
}

// Dies ist der Konstruktor einer Klasse, die exportiert wurde.
// see vc6dll.h for the class definition
CVc6dll::CVc6dll()
{ 
	return; 
}
</code></pre>
<p>.def</p>
<pre><code class="language-cpp">; Reg321.def : Deklariert die Modul-Parameter für die DLL.

LIBRARY      &quot;vc6dll&quot;

DESCRIPTION  'none'

EXPORTS

	;Funktionsname			;Beschreibung
	fnVc6dll
	;Variablen
	nVc6dll DATA
	;Klassen
	CVc6dll
</code></pre>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167128/klasse-aus-einer-dll-über-def-exportieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 19:16:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167128.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Dec 2006 18:27:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 18:27:50 GMT]]></title><description><![CDATA[<p>Wie kann ich eine Klasse aus der DLL exportiren?</p>
<p>Für Variablen und Funktionen habe ich das geschafft.<br />
Nur wenn ich den Klassenbezeichner in die .def-Datei eintrage bekomme ich einen Linkerfehler.</p>
<p>.h</p>
<pre><code class="language-cpp">#ifdef VC6DLL_EXPORTS
#define VC6DLL_API __declspec(dllexport)
#else
#define VC6DLL_API __declspec(dllimport)
#endif

// Diese Klasse ist aus vc6dll.dll exportiert
class VC6DLL_API CVc6dll {
public:
	CVc6dll(void);
	// ZU ERLEDIGEN: Fügen Sie hier Ihre Methoden hinzu.
};

extern VC6DLL_API int nVc6dll;

VC6DLL_API int fnVc6dll(void);
</code></pre>
<p>.cpp</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &quot;vc6dll.h&quot;

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}

// Dies ist ein Beispiel für eine exportierte Variable
VC6DLL_API int nVc6dll=1234;

// Dies ist ein Beispiel für eine exportierte Funktion.
VC6DLL_API int fnVc6dll(void)
{
	return 42;
}

// Dies ist der Konstruktor einer Klasse, die exportiert wurde.
// see vc6dll.h for the class definition
CVc6dll::CVc6dll()
{ 
	return; 
}
</code></pre>
<p>.def</p>
<pre><code class="language-cpp">; Reg321.def : Deklariert die Modul-Parameter für die DLL.

LIBRARY      &quot;vc6dll&quot;

DESCRIPTION  'none'

EXPORTS

	;Funktionsname			;Beschreibung
	fnVc6dll
	;Variablen
	nVc6dll DATA
	;Klassen
	CVc6dll
</code></pre>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188105</guid><dc:creator><![CDATA[daishi]]></dc:creator><pubDate>Wed, 06 Dec 2006 18:27:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 18:46:39 GMT]]></title><description><![CDATA[<p>Du musst dir decorated names angeben. Viel Spass dabei <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/1188116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188116</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 06 Dec 2006 18:46:39 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 18:57:58 GMT]]></title><description><![CDATA[<p>Ok, hast du auch ein Beispiel parat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188126</guid><dc:creator><![CDATA[daishi]]></dc:creator><pubDate>Wed, 06 Dec 2006 18:57:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 19:19:58 GMT]]></title><description><![CDATA[<p>Du exportierst doch schon die Klasse durch das &quot;__declspec(dllexport)&quot;! Warum willst Du es dann noch in der DEF-Datei anageben???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188142</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 06 Dec 2006 19:19:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 19:23:11 GMT]]></title><description><![CDATA[<p>Ich will später die DLL bei bedarf zur Laufzeit in meinem Programm laden und entladen.</p>
<pre><code class="language-cpp">int (__stdcall* FUNKTION)(void);
FUNKTION=(int(__stdcall*)(void))GetProcAddress(hDLL,&quot;fnVc6dll&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1188143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188143</guid><dc:creator><![CDATA[daishi]]></dc:creator><pubDate>Wed, 06 Dec 2006 19:23:11 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 20:19:51 GMT]]></title><description><![CDATA[<p>Zur Laufzeit Klassen dynamisch laden geht nur sehr eingeschränkt und wird zumindest nicht offiziell supported.<br />
Mach Dir ein reines C-Interface, dann hast Du die ganzen Probleme nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188169</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 06 Dec 2006 20:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 20:28:03 GMT]]></title><description><![CDATA[<p>Komisch, mit ner struct hatte es an einer struct hatte es aber an einer anderen stelle funktioniert.<br />
ich such das mal raus und poste es hier.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188174</guid><dc:creator><![CDATA[daishi]]></dc:creator><pubDate>Wed, 06 Dec 2006 20:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 20:32:15 GMT]]></title><description><![CDATA[<p>Du brauchst es nicht posten... ich hatte nicht gesagt das es nicht geht... sondern nur sehr eingeschränkt... mit Vererbung hast Du vermutlich noch nicht so viel gemacht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188177</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 06 Dec 2006 20:32:15 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus einer DLL über .def exportieren on Wed, 06 Dec 2006 20:52:35 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Du brauchst es nicht posten... ich hatte nicht gesagt das es nicht geht... sondern nur sehr eingeschränkt</p>
</blockquote>
<p>Ich habe es gefunden. Ich habe dabei aber nicht die Klasse sonder nur eine Instanz von ihr exportiert.</p>
<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>... mit Vererbung hast Du vermutlich noch nicht so viel gemacht...</p>
</blockquote>
<p>Doch, wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188186</guid><dc:creator><![CDATA[daishi]]></dc:creator><pubDate>Wed, 06 Dec 2006 20:52:35 GMT</pubDate></item></channel></rss>