<?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[Problem mit Klasse in DLL]]></title><description><![CDATA[<p>Ich implementiere in einer DLL eine Klasse. Die Deklaration dieser Klasse wird sowohl von der DLL als auch vom Hauptprogramm includiert. Ich exportiere genau eine Funktion, die eine Instanz auf besagt Klasse zurück gibt.</p>
<p>Warum bekomme ich bei jedem Call eins der Member eine fehlermeldung a la &quot;MyClass::func() referenced from ...obj...&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117855/problem-mit-klasse-in-dll</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 12:50:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117855.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Aug 2005 19:45:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Thu, 11 Aug 2005 19:45:41 GMT]]></title><description><![CDATA[<p>Ich implementiere in einer DLL eine Klasse. Die Deklaration dieser Klasse wird sowohl von der DLL als auch vom Hauptprogramm includiert. Ich exportiere genau eine Funktion, die eine Instanz auf besagt Klasse zurück gibt.</p>
<p>Warum bekomme ich bei jedem Call eins der Member eine fehlermeldung a la &quot;MyClass::func() referenced from ...obj...&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850419</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Thu, 11 Aug 2005 19:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Thu, 11 Aug 2005 20:42:23 GMT]]></title><description><![CDATA[<p>Ich versteh nur nicht warum du dafür ne Funktion verwendest?</p>
<p>Mach doch die ganze Klasse export.</p>
<p>Siehe Beispiel:<br />
io.h:</p>
<pre><code>#ifdef __DLL__
# define DLL_EXP __declspec(dllexport)
#else
# define DLL_EXP __declspec(dllimport)
#endif

class DLL_EXP TBeispiel{
};
</code></pre>
<p>Da mußte dann nur die header einbinden mehr net. Für import mußt du dich net kümmern, durch das ifdef....endif</p>
<p>Somit brauchst du auch keine Funktion schreiben....</p>
<p>Achja, falls die dll statisch verwendet wird, soltest du auch die .lib einbinden in das projekt. ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850445</guid><dc:creator><![CDATA[DJ BlackEagle]]></dc:creator><pubDate>Thu, 11 Aug 2005 20:42:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Thu, 11 Aug 2005 21:33:44 GMT]]></title><description><![CDATA[<p>Wieso macht es bei der dll ein unterschied ob ich einen header einbinde oder sie gleich hineinschreibe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850465</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Thu, 11 Aug 2005 21:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Thu, 11 Aug 2005 21:34:52 GMT]]></title><description><![CDATA[<p>Als ich die Objektdatei der dll gelinkt habe, ging es ebenfalls...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850466</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Thu, 11 Aug 2005 21:34:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Thu, 11 Aug 2005 21:36:33 GMT]]></title><description><![CDATA[<p>PS: Lassen sich etwa auch Klassendeklarationen exportieren? Die haben aber doch keine Adresse usw... ?!?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850468</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Thu, 11 Aug 2005 21:36:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Fri, 12 Aug 2005 07:01:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Lassen sich etwa auch Klassendeklarationen exportieren? Die haben aber doch keine Adresse usw... ?!?!?</p>
</blockquote>
<p>Ja, die habe auch sonst keine &quot;Adresse&quot; erst durch</p>
<p>KLasse myclass</p>
<p>oder</p>
<p>Klasse *myclass=new Klasse()</p>
<p>wird eine Instanz mit einer Adresse angelegt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/850538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/850538</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Fri, 12 Aug 2005 07:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Sun, 14 Aug 2005 14:50:08 GMT]]></title><description><![CDATA[<p>Wieso hat es denn funktioniert als ich die .obj Datei vom Dll zu meinem Hauptprojekt gelinkt habe? Und is das von der größe her dann nicht doppelt gemoppelt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852003</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Sun, 14 Aug 2005 14:50:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Sun, 14 Aug 2005 15:06:53 GMT]]></title><description><![CDATA[<p>Ok... es ist definitiv doppelt gemoppelt. Jetzt nochmal das ganze Problem:</p>
<p><strong>Der gemeinsame Haeder:</strong></p>
<pre><code class="language-cpp">class MyClass{
  public:
    void func(void);
};
</code></pre>
<p><strong>Die DLL:</strong></p>
<pre><code class="language-cpp">void MyClass::func(void)
{
  ...
}

extern &quot;C&quot; __declspec(dllexport) MyClass *WINAPI GibMirMyClass(void) {
  return new MyClass();
}
</code></pre>
<p><strong>Das Hauptprogramm:</strong></p>
<pre><code class="language-cpp">typedef MyClass* (* MyClassPtr)(void);

int main(int argc, char* argv[])
{
  HMODULE MyClassLib;
  MyClassPtr GibMirMyClassFunction = NULL;

  MyClassLib = LoadLibrary(&quot;engine\\MyClass.dll&quot;);
  if(MyClassLib == NULL){
    //Fehler...
    ...
  }
  GibMirMyClassFunction = (MyClassPtr)GetProcAddress(MyClassLib, &quot;GibMirMyClass&quot;);
  if(GibMirMyClassFunction == NULL){
    //Fehler...
    ...
  }        

  MyClass *Juhu = GibMirMyClassFunction();

  Juhu-&gt;func();  //Hier ist der Fehler

  ...
}
</code></pre>
<p>Ich binde wie man sieht dynamisch ein. Die Lib ist mitgelinkt. Jedoch kriege ich bei jedem Call eines Members von <strong>MyClass</strong> eine fehlermeldung wie:</p>
<pre><code>[Linker Error] Unresolved external 'MyClass::func()' referenced from G:\...\MAIN.OBJ
</code></pre>
<p>Ich hoffe jetzt könnt ihr mir besser helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852012</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Sun, 14 Aug 2005 15:06:53 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Mon, 15 Aug 2005 18:17:27 GMT]]></title><description><![CDATA[<p>Hat keiner eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852793</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Mon, 15 Aug 2005 18:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Klasse in DLL on Tue, 16 Aug 2005 04:39:12 GMT]]></title><description><![CDATA[<p>Warum nimmst du nicht endlich das Beispiel von DJ BlackEagle<br />
als Grundlage?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852978</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Tue, 16 Aug 2005 04:39:12 GMT</pubDate></item></channel></rss>