<?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[Von Console zu Dll umwandeln]]></title><description><![CDATA[<p>Hallo und guten Abend</p>
<p>Ich hab schon gesucht, aber definitiv was gefunden hab ich nichts.<br />
Ich hoff Ihr könnt mir auf die Sprünge helfen.</p>
<p>Ich habe mir eine normale Consolenprogrammierung gemacht, die läuft auch wunderbar ... Nun möchte ich diese 1 zu 1 in eine DLL umwandeln. (So alleinstehend lässt sich das Projekt fehlerfrei kompilieren)</p>
<p>Wenn ich die DLL von einem anderen Projekt (MAIN-PROJEKT) aus mitkompiliere kommt mir immer unten stehende Fehlermeldung.</p>
<p>Ich weiss das static Variablen immer ausserhalb der Symbolbildung deklariert werden müssen .. wie muss es den bei Verwendung als DLL gemacht werden?</p>
<p>Hier noch ein bisserl Code, wo das Problem besteht.</p>
<p>Danke für die Hilfe.</p>
<pre><code>//ObjInitControl.h

#pragma once
#ifndef __OBJ_INIT_CONTROL_H__
#define __OBJ_INIT_CONTROL_H__

class __declspec(dllexport) ObjInitControls{
private:
	static bool _init;
public:
	ObjInitControls(){}
	~ObjInitControls(){}

	static void Init();
};

#endif
</code></pre>
<pre><code>//ObjInitControl.cpp

#include &quot;stdafx.h&quot;
#include &quot;objInitControls.h&quot;

bool ObjInitControls::_init=false;

void ObjInitControls::Init(){
	if(_init==true)return;
	//...
       	_init = true;
}
</code></pre>
<pre><code>Fehlermeldung:
.... error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;private: static bool ObjInitControls::_init&quot; (?_init@ObjInitControls@@0_NA)&quot;.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/330812/von-console-zu-dll-umwandeln</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 18:23:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330812.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jan 2015 16:35:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Von Console zu Dll umwandeln on Mon, 26 Jan 2015 16:35:29 GMT]]></title><description><![CDATA[<p>Hallo und guten Abend</p>
<p>Ich hab schon gesucht, aber definitiv was gefunden hab ich nichts.<br />
Ich hoff Ihr könnt mir auf die Sprünge helfen.</p>
<p>Ich habe mir eine normale Consolenprogrammierung gemacht, die läuft auch wunderbar ... Nun möchte ich diese 1 zu 1 in eine DLL umwandeln. (So alleinstehend lässt sich das Projekt fehlerfrei kompilieren)</p>
<p>Wenn ich die DLL von einem anderen Projekt (MAIN-PROJEKT) aus mitkompiliere kommt mir immer unten stehende Fehlermeldung.</p>
<p>Ich weiss das static Variablen immer ausserhalb der Symbolbildung deklariert werden müssen .. wie muss es den bei Verwendung als DLL gemacht werden?</p>
<p>Hier noch ein bisserl Code, wo das Problem besteht.</p>
<p>Danke für die Hilfe.</p>
<pre><code>//ObjInitControl.h

#pragma once
#ifndef __OBJ_INIT_CONTROL_H__
#define __OBJ_INIT_CONTROL_H__

class __declspec(dllexport) ObjInitControls{
private:
	static bool _init;
public:
	ObjInitControls(){}
	~ObjInitControls(){}

	static void Init();
};

#endif
</code></pre>
<pre><code>//ObjInitControl.cpp

#include &quot;stdafx.h&quot;
#include &quot;objInitControls.h&quot;

bool ObjInitControls::_init=false;

void ObjInitControls::Init(){
	if(_init==true)return;
	//...
       	_init = true;
}
</code></pre>
<pre><code>Fehlermeldung:
.... error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;private: static bool ObjInitControls::_init&quot; (?_init@ObjInitControls@@0_NA)&quot;.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2439869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439869</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 26 Jan 2015 16:35:29 GMT</pubDate></item><item><title><![CDATA[Reply to Von Console zu Dll umwandeln on Mon, 26 Jan 2015 17:16:56 GMT]]></title><description><![CDATA[<p>Wenn du die DLL-Datei in einem anderen Projekt Verwenden möchstest, und dort den Header einbindest, muss dort in der Klassendefinition <code>__declspec(dllimport)</code> stehen (und nicht <code>export</code> ). Ich vermute mal dass das die Ursache deines Problems ist. Üblicherweise löst man sowas mithilfe eines Makros, das wenn die DLL kompiliert wird als <code>__declspec(dllexport)</code> und beim Einbinden in ein anderes Proramm als <code>__declspec(dllimport)</code> definiert wird.</p>
<p>Ansonsten ist das Ganze eher Compiler-spezifisch und vielleicht besser im Forum zu Visual C++ aufgehoben <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>Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439875</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Mon, 26 Jan 2015 17:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Von Console zu Dll umwandeln on Mon, 26 Jan 2015 17:32:14 GMT]]></title><description><![CDATA[<p>danke für die Antwort Finnegan</p>
<p>Ich habs ausprobiert ... ist es leider nicht. aber ich werd das nochmals komplett durchgehen ...</p>
<p>Nur eine frage bezüglich makro .. wie meinst du das .. gibs dafür ein tut? ... ich hab jetzt alles von hand gemacht ..</p>
<p>Danke und m.f.g wachs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439879</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 26 Jan 2015 17:32:14 GMT</pubDate></item><item><title><![CDATA[Reply to Von Console zu Dll umwandeln on Mon, 26 Jan 2015 17:46:19 GMT]]></title><description><![CDATA[<p>wachs schrieb:</p>
<blockquote>
<p>Nur eine frage bezüglich makro .. wie meinst du das .. gibs dafür ein tut? ... ich hab jetzt alles von hand gemacht ..</p>
</blockquote>
<p>Gibt sicher auch detailliertere Infos im Netz, aber für den Anfang sollte so twas simples hier reichen:</p>
<p>In einer zentralen Header Datei (z.B. mydll_config.h, etc.):</p>
<pre><code>#if defined(MYDLL_EXPORT)
    #define MYDLL_API __declspec(dllexport)
#else
    #define MYDLL_API __declspec(dllimport)
#endif
</code></pre>
<p>... und dann in der Klassendeklaration:</p>
<pre><code>#include &lt;mydll_config.h&gt;
...
class MYDLL_API ObjInitControls{
...
};
</code></pre>
<p>Im Projekt das die DLL-Datei kompiliert definiert man dann bei den Präprozessor-Definitionen <code>MYDLL_EXPORT</code> , bzw. gibt dem Compiler sowas wie <code>-DMYDLL_EXPORT</code> als Option mit auf den Weg. Bei dem Projekt, welches die DLL verwendet tut man das nicht.</p>
<p>Das Makro kann man dann natürlich auch noch zwischen verschiedenen Compilern und Zielsystemen unterscheiden lassen, da das Ganze wie gesagt Compiler-spezifisch ist. Dafür fürde ich dann an deiner Stelle mal eine Suchmaschine bemühen.</p>
<p>Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439881</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Mon, 26 Jan 2015 17:46:19 GMT</pubDate></item><item><title><![CDATA[Reply to Von Console zu Dll umwandeln on Mon, 26 Jan 2015 17:48:15 GMT]]></title><description><![CDATA[<p>Tatsächlich ... habs jetzt nochmals durchkompiliert .. ist zwar ein bisschen aufwändig und ein paar kleine schnickschnakcs an fehler die ich beheben muss melden sich, aber ansonsten läst sich das komplett kompilieren...</p>
<p>D.H. eigenständiges Projekt als dllexport kompilieren und nachher vom Main-Projekt aus kurz umgeschrieben zu dllimport und Gesamtkompilierung gemacht .. UNd es läuft .. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> ...</p>
<p>Versteh zwar jetzt nicht genau warum das so ist aber ich werd mir das nochmals zu gemüüte führen .. <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>
<p>gruss wachs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439882</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 26 Jan 2015 17:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Von Console zu Dll umwandeln on Mon, 26 Jan 2015 17:49:22 GMT]]></title><description><![CDATA[<p>s. <a href="http://stackoverflow.com/questions/14980649/macro-for-dllexport-dllimport-switch" rel="nofollow">Macro for dllexport/dllimport switch</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439883</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 26 Jan 2015 17:49:22 GMT</pubDate></item><item><title><![CDATA[Reply to Von Console zu Dll umwandeln on Mon, 26 Jan 2015 18:14:54 GMT]]></title><description><![CDATA[<p>Danke euch ... das war wieder voll lehrreich ...</p>
<p>Gruss wachs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439887</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 26 Jan 2015 18:14:54 GMT</pubDate></item></channel></rss>