<?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[Klassen mittels .def Datei exportieren]]></title><description><![CDATA[<p>Hi!<br />
Ich habe das Problem, dass ich nicht weiß, wie ich Klassen mittels einer .def Datei aus einer dll Datei exportieren kann!</p>
<p>Mit dllexport funktioniert es zwar wunderbar, aber ich will nur die Ordinalzahlen exportieren, da es eine wirklich große dll Datei wird. Daher brauche ich eine .def Datei.</p>
<p>Ich habe schon alles Mögliche durchprobiert...</p>
<p>prog.h</p>
<pre><code>class foo {

   public:
	int bar(int x);

} klasse;
</code></pre>
<p>prog.cpp</p>
<pre><code>int foo::bar(int x) {

	return x;

}
</code></pre>
<p>prog.def</p>
<pre><code>LIBRARY prog
EXPORTS
foo	  @1 NONAME
bar	  @2 NONAME
foo::bar  @3 NONAME
klasse    @4 NONAME
klasse.bar @5 NONAME
</code></pre>
<p>...aber jeder Eintrag bringt den Fehler 'Nichtaufgelöstes externes Symbol'</p>
<p>Ich hoffe, ihr könnt mir helfen</p>
<p>mfg. Dominator</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162171/klassen-mittels-def-datei-exportieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 03:22:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162171.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Oct 2006 23:27:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen mittels .def Datei exportieren on Sun, 15 Oct 2006 23:27:59 GMT]]></title><description><![CDATA[<p>Hi!<br />
Ich habe das Problem, dass ich nicht weiß, wie ich Klassen mittels einer .def Datei aus einer dll Datei exportieren kann!</p>
<p>Mit dllexport funktioniert es zwar wunderbar, aber ich will nur die Ordinalzahlen exportieren, da es eine wirklich große dll Datei wird. Daher brauche ich eine .def Datei.</p>
<p>Ich habe schon alles Mögliche durchprobiert...</p>
<p>prog.h</p>
<pre><code>class foo {

   public:
	int bar(int x);

} klasse;
</code></pre>
<p>prog.cpp</p>
<pre><code>int foo::bar(int x) {

	return x;

}
</code></pre>
<p>prog.def</p>
<pre><code>LIBRARY prog
EXPORTS
foo	  @1 NONAME
bar	  @2 NONAME
foo::bar  @3 NONAME
klasse    @4 NONAME
klasse.bar @5 NONAME
</code></pre>
<p>...aber jeder Eintrag bringt den Fehler 'Nichtaufgelöstes externes Symbol'</p>
<p>Ich hoffe, ihr könnt mir helfen</p>
<p>mfg. Dominator</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155345</guid><dc:creator><![CDATA[Dominator86]]></dc:creator><pubDate>Sun, 15 Oct 2006 23:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen mittels .def Datei exportieren on Mon, 16 Oct 2006 00:38:52 GMT]]></title><description><![CDATA[<p>Du musst die &quot;decorated names&quot; angeben. Das wiederum macht jeder Compiler etwas anders. Eine Möglichkeit ist zuerst alles mittels &quot;__declspec(dllexport)&quot; zu exportieren, und dir dann mittels &quot;dumpbin dllname.dll /EXPORTS &gt; list.txt&quot; eine Exportliste zu erstellen. Wenns bloss ein paar Funktionen sind kannst du die Namen da einfach rauskopieren, sonst gehst du her und schreibst ein kleines Programm welches das generierte Textfile durchackert und ein .def File daraus erstellt. Dann das &quot;__declspec(dllexport)&quot; wieder wegmachen und das .def File stattdessen verwenden und fertig. Das &quot;__declspec(dllexport)&quot; setzt man üblicherweise mit einem Präprozessormacro vor die Klasse, dann kannst du relativ schnell und einfach wechseln.</p>
<p>Wenn du dann ein schön grosses .def File hast kannst du auch ohne weiteres hergehen und neue Funktionen einfach im Code dazuschreiben. Sobald du die in einem Programm verwendest bekommst du eine schöne Linker-Fehlermeldung, da steht auch der decorated name drinnen, den brauchst du nur kopieren und ins .def File mit aufnehmen.</p>
<p>Im allgemeinen würde ich aber davon abraten, es sei denn du musst um jeden Preis die Exportnamen &quot;geheim halten&quot;. Selbst bei tausenden importierten Symbolen ist die Ladezeit nicht viel länger wenn nach Namen gelinkt wird, und die Filegrösse ... ist sowieso meistens egal. Zugegeben, bei vielen kleinen Funktionen mit tief geschalchtelten Namespaces und langen Bezeichnernamen kann es einen deutlichen Unterschied machen. Andrerseits musst du dann sehr gut aufpassen dass nicht verschiedene Versionen gemischt werden -- eine Nummer ist nunmal nur eine Nummer, ob dahinter dann auch die richtige Funktion steht kann der Loader nicht wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155349</guid><dc:creator><![CDATA[Plotzenhotz]]></dc:creator><pubDate>Mon, 16 Oct 2006 00:38:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen mittels .def Datei exportieren on Mon, 16 Oct 2006 07:26:30 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=4" rel="nofollow">WinAPI</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/1155422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155422</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 16 Oct 2006 07:26:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen mittels .def Datei exportieren on Mon, 16 Oct 2006 16:43:30 GMT]]></title><description><![CDATA[<p>Danke Plotzenhotz, hat wunderbar funktioniert!</p>
<p>Nur leider ändern sich die &quot;decorated names&quot; jedes mal, wenn ich an den Klassen etwas verändere.<br />
Es ist etwas umständlich, jedesmal die aktuellen &quot;decorated names&quot; zu bekommen...</p>
<p>Naja, ich werde mir wohl ein kleines DEF-Generator-Tool basteln müssen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1155851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155851</guid><dc:creator><![CDATA[Dominator86]]></dc:creator><pubDate>Mon, 16 Oct 2006 16:43:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen mittels .def Datei exportieren on Mon, 16 Oct 2006 16:54:15 GMT]]></title><description><![CDATA[<p>Ich würde diesen Weg gar nicht gehen.</p>
<p>Ich würde Interface Klassen bauen (wie bei COM), und diese entsprechenden Zeiger aus einer simplen Funktion returnieren. Das ist die einfachste und sauberste Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155859</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 16 Oct 2006 16:54:15 GMT</pubDate></item></channel></rss>