<?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 Regeln... was geht &#x2F; was geht nicht]]></title><description><![CDATA[<p>Hi all,<br />
Ich habe gerade angst dass ich gleich die Lust an meinem Projekt verliere weil ich auf die Idee kam bei 80% einfach mal auf DLLs umzustellen und jetzt geht nichts mehr...</p>
<p>Also ich habe den Fehler (AccessViolation) eingezäunt auf:</p>
<pre><code class="language-cpp">printf( &quot;.&quot; );
	myWnd = CreateWindow(
				appName,					//Name der Fensterklasse
				appTitle,					//Titel des Fensters
				WS_VISIBLE | WS_SYSMENU | WS_MINIMIZEBOX,//Stil des Fensters
				CW_USEDEFAULT,				//Position X
				CW_USEDEFAULT,				//Position Y
				progWidth,						//Breite
				progHeight,						//hoehe
				NULL,						//Parent
				myMenu,						//Menue
				myHandleInst,				//Handle des Programms
				NULL						//Zusaetzliche Daten
			);
	printf( &quot;.&quot; );
</code></pre>
<p>Die ausgabe ist</p>
<pre><code>.
//WINDOWSNachricht von ewgen &quot;Musste beendet werden&quot;
</code></pre>
<p>Wenni ch &quot;Programm Debuggen&quot; klicke steht halt &quot;AccessViolation&quot;.</p>
<p>Jetzt habei ch mich gefragt, da halt schon das mit LRESULT CALLBACK nicht ging, ob es da regeln gibt, was in eine DLL darf und was nicht, oder ob ich eifnach was falsch mache... !?</p>
<p>[edit]DANKE für jede antwort... Ich habe gesucht aber irgendwie komm ich nich aufn grünen Ast...<br />
Hier im Forum steht auch nicht allzuviel zu DLLs immer nur Probleme, aber nicht Regeln xD</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219242/dll-regeln-was-geht-was-geht-nicht</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 14:01:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219242.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 31 Jul 2008 09:51:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Thu, 31 Jul 2008 09:53:20 GMT]]></title><description><![CDATA[<p>Hi all,<br />
Ich habe gerade angst dass ich gleich die Lust an meinem Projekt verliere weil ich auf die Idee kam bei 80% einfach mal auf DLLs umzustellen und jetzt geht nichts mehr...</p>
<p>Also ich habe den Fehler (AccessViolation) eingezäunt auf:</p>
<pre><code class="language-cpp">printf( &quot;.&quot; );
	myWnd = CreateWindow(
				appName,					//Name der Fensterklasse
				appTitle,					//Titel des Fensters
				WS_VISIBLE | WS_SYSMENU | WS_MINIMIZEBOX,//Stil des Fensters
				CW_USEDEFAULT,				//Position X
				CW_USEDEFAULT,				//Position Y
				progWidth,						//Breite
				progHeight,						//hoehe
				NULL,						//Parent
				myMenu,						//Menue
				myHandleInst,				//Handle des Programms
				NULL						//Zusaetzliche Daten
			);
	printf( &quot;.&quot; );
</code></pre>
<p>Die ausgabe ist</p>
<pre><code>.
//WINDOWSNachricht von ewgen &quot;Musste beendet werden&quot;
</code></pre>
<p>Wenni ch &quot;Programm Debuggen&quot; klicke steht halt &quot;AccessViolation&quot;.</p>
<p>Jetzt habei ch mich gefragt, da halt schon das mit LRESULT CALLBACK nicht ging, ob es da regeln gibt, was in eine DLL darf und was nicht, oder ob ich eifnach was falsch mache... !?</p>
<p>[edit]DANKE für jede antwort... Ich habe gesucht aber irgendwie komm ich nich aufn grünen Ast...<br />
Hier im Forum steht auch nicht allzuviel zu DLLs immer nur Probleme, aber nicht Regeln xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556901</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 31 Jul 2008 09:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Thu, 31 Jul 2008 10:42:26 GMT]]></title><description><![CDATA[<p>Wo rufst Du den gezeigten Code auf?<br />
DllMain?<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556939</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 31 Jul 2008 10:42:26 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Thu, 31 Jul 2008 11:47:01 GMT]]></title><description><![CDATA[<p>Ich habe keine DllMain implementiert da es auch ohne lief... ist das mein Fehler?</p>
<p>Dieser Code steht in einer DLL funktioniert aber nicht. Es ist quasi eine Funktion die diese Funktion aufruft und halt paar sachen zusätzlich nochmacht... Nichts besonderes also.</p>
<p>Danke für deine Antwort.</p>
<p>[edit]Globale Variablen.. liegts daran? Dürfen die in DLLs verwendet werden? ja ich weiß sehr sauber ist es nicht aber ich mein geht es überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556944</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 31 Jul 2008 11:47:01 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Thu, 31 Jul 2008 11:59:56 GMT]]></title><description><![CDATA[<p>Das liegt nicht an DLL sondern an der Funktion.<br />
habe sie in die prog.c mit aufgenommen um zu Testen obs da geht, witzig ist: auch hier schmiert CreateWindow ab.</p>
<p>Wieos? Ich habe nichts gändert... ? Fällt wem was an der Funktion auf? hier die params</p>
<pre><code class="language-cpp">#define VERSION			&quot;0.20.05-350&quot;
#define appName			&quot;iBassTabs&quot;
#define newTABHeight	300
#define newTABWidth		400
char appTitle[256] = { 0 };
HMENU	myMenu = NULL;
HINSTANCE myHandleInst;
wsprintf( appTitle, &quot;%s - Write your own Bass Tabs | Version: %s\0&quot;, appName, VERSION );
</code></pre>
<p>Danke fürs lesen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556987</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 31 Jul 2008 11:59:56 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Thu, 31 Jul 2008 14:23:48 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hier fehlt mir die Angabe, welche Art Fenster (WS_OVERLAPPED, WS_POPUP usw..) es sein soll, ausserdem ist unklar, wie und ob <em>RegisterClass</em> aufgerufen wurde...</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1557082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1557082</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Thu, 31 Jul 2008 14:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Tue, 19 Aug 2008 13:01:31 GMT]]></title><description><![CDATA[<p>Erstmal danke für deine Antwort!!!!!</p>
<p>Ok, ich war im Urlaub bin aber wieder da:<br />
also RegisterClass wird so aufgerufen wie in einem normalen Programm auch, liegt halt in einer DLL.</p>
<p>Danach kommt</p>
<pre><code class="language-cpp">BOOL createMainWindow( HINSTANCE myHandleInst )
/*
	This function creates the Window of the program.
	It sends also a WM_CREATE message to the window procedure.
*/
{
	HWND myWnd;
	BOOL returnValue = TRUE;

	printf( &quot;.as&quot; );
	myWnd = CreateWindow(
				appName,					//Name der Fensterklasse
				appTitle,					//Titel des Fensters
				WS_VISIBLE | WS_SYSMENU | WS_MINIMIZEBOX,//Stil des Fensters
				CW_USEDEFAULT,				//Position X
				CW_USEDEFAULT,				//Position Y
				progWidth,						//Breite
				progHeight,						//hoehe
				NULL,						//Parent
				myMenu,						//Menue
				myHandleInst,				//Handle des Programms
				NULL						//Zusaetzliche Daten
			);
	printf( &quot;.df&quot; );

	if( !myWnd )					//Can't create Window
		returnValue = FALSE;
	else
	{
		myAppWnd = myWnd;			//save the Handle
		ShowWindow( myWnd, SW_SHOW );
		UpdateWindow( myWnd );		//WM_PAINT message an Fenster senden
	}

	return returnValue;
}
</code></pre>
<p>Also alles wie vorher, wo noch alles lief.. nur jetz will nichts in die DLL... ?</p>
<p>Wenn du nochwas brauchst, sag bitte bescheid, ist besser als nichts sagen .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567550</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Tue, 19 Aug 2008 13:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Tue, 19 Aug 2008 14:36:33 GMT]]></title><description><![CDATA[<p>...bin auch erst gerade aus dem Urlaub zurück... <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>Du hattest geschrieben, dass es selbst ohne den DLL-Einsatz nicht funktioniert, geht das denn jetzt? Wenn ja, dann kann man sich bei der Fehlersuche auf die DLL konzentrieren...</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567645</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Tue, 19 Aug 2008 14:36:33 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Tue, 19 Aug 2008 20:01:31 GMT]]></title><description><![CDATA[<p>Bist du sicher dass du das korrekte instance-handle an RegisterClass und CreateWindow übergibst?<br />
(CreateWindow ignoriert das AFAIK, aber RegisterClass NICHT)</p>
<p>An RegisterClass musst du das instance-handle des Moduls übergeben welches die Window-Procedure enthält, also in deinem Fall vermutlich das Handle der DLL.<br />
Dieses kannst du entweder über hässliche Tricks aus der Adresse einer Funktion in der DLL ermitteln, oder du implementierst einfach DllMain und kopierst dir dort das instance-handle in irgendeine globale Variable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567845</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 19 Aug 2008 20:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Wed, 20 Aug 2008 06:57:49 GMT]]></title><description><![CDATA[<p><a href="http://blog.m-ri.de/index.php/2007/12/12/die-unsitte-immer-getmodulehandlenull-fuer-hinstance-in-createwindow-und-registerclass-zu-verwenden/" rel="nofollow">http://blog.m-ri.de/index.php/2007/12/12/die-unsitte-immer-getmodulehandlenull-fuer-hinstance-in-createwindow-und-registerclass-zu-verwenden/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567956</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 20 Aug 2008 06:57:49 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Wed, 20 Aug 2008 11:50:42 GMT]]></title><description><![CDATA[<p>lippoliv schrieb:</p>
<blockquote>
<p>Also alles wie vorher, wo noch alles lief.. nur jetz will nichts in die DLL... ?</p>
</blockquote>
<p>Den ersten Satz verstehe ich! Den zweiten nichtmehr.</p>
<p>Was ich meinte ist:</p>
<p>Ich habe in den DLLs alles wie als es noch in dem Code stand, da lief alles, aber aus den DLLs heraus kommt nichts.</p>
<p>Er kann die funktion halt nicht starten, bei der das Fenster Registriert wird.</p>
<p>Kurzfassung:<br />
create funktion1<br />
check funktion1<br />
funktion1 == OK</p>
<p>move funktion1 bla.c -&gt; bla.dll<br />
check funktion1<br />
funktion1 != OK</p>
<p>Tja so siehts aus...</p>
<p>Ok Martins post...<br />
Auch wenn ich... hm...<br />
Ich habe eine DLL aus der die FensterKlasse registriert wird, an die übergebe ich eine eigene Struktur die unter anderem auch eine HINSTANCE Variable(die hInstance entspricht) beinhaltet.<br />
Dann sollte das auch gehen oder?</p>
<p>DANKE FÜR EURE POSTS!</p>
<p>[edit]<br />
Also ich habe die resource.h mit HINSTANCE aktInst;<br />
Die resource.h wird in der prog.c und der erstellten bla.dll benutz.</p>
<p>jetzt sage ich in der prog.c bei winMain aktInst = hInstance;<br />
und in der bla.dll wird aktInst zum registrieren der Fensterklasse benutzt.</p>
<p>Ist aktInst aus der dll das selbe wie das aus prog.c? Nein ne?</p>
<p>das ist mein Fehler ne?</p>
<p>[edit2]<br />
gut das ist der fhelr.<br />
Bei dem getrennten kompilieren entstehen auch getrennte variablen,<br />
das heist die aktInst aus der resource.h die in die dll compiliert wird, ist später natürlich nicht mehr die selbe wie die von der exe...</p>
<p>Habe jetzt erstmal zu tun, um alles umzuschreiben... danke für eure anregungen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568163</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Wed, 20 Aug 2008 11:50:42 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Wed, 20 Aug 2008 15:59:51 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p><a href="http://blog.m-ri.de/index.php/2007/12/12/die-unsitte-immer-getmodulehandlenull-fuer-hinstance-in-createwindow-und-registerclass-zu-verwenden/" rel="nofollow">http://blog.m-ri.de/index.php/2007/12/12/die-unsitte-immer-getmodulehandlenull-fuer-hinstance-in-createwindow-und-registerclass-zu-verwenden/</a></p>
</blockquote>
<p>Ich hab den Artikel übrigens gelesen (also früher schon, nicht erst jetzt wo du den Link gepostet hast).<br />
Nett <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/1568434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568434</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 20 Aug 2008 15:59:51 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Regeln... was geht &#x2F; was geht nicht on Thu, 21 Aug 2008 06:26:40 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Martin Richter schrieb:</p>
<blockquote>
<p><a href="http://blog.m-ri.de/index.php/2007/12/12/die-unsitte-immer-getmodulehandlenull-fuer-hinstance-in-createwindow-und-registerclass-zu-verwenden/" rel="nofollow">http://blog.m-ri.de/index.php/2007/12/12/die-unsitte-immer-getmodulehandlenull-fuer-hinstance-in-createwindow-und-registerclass-zu-verwenden/</a></p>
</blockquote>
<p>Ich hab den Artikel übrigens gelesen (also früher schon, nicht erst jetzt wo du den Link gepostet hast).<br />
Nett <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>
</blockquote>
<p>Beide Beiträge sind nett.</p>
<p>Ich hab ihn auch gelesen, der brachte micha uf die idee das DLL glob-Vars != EXE glob-Vars sind, auch wenn sie in der selben .h standen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568633</guid><dc:creator><![CDATA[lippoliv]]></dc:creator><pubDate>Thu, 21 Aug 2008 06:26:40 GMT</pubDate></item></channel></rss>