<?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[Richtig eine statisch gelinkte MFC DLL erstellen ?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe hier gerade mächtig Probleme mit dem Erzeugen einer DLL mit einem<br />
MFC Fenster. Als erstes bekomme ich das übliche _DLLMain Problem im Linker<br />
und wenn ich denn mit /FORCE mal weitermache, klappt es nicht auf jeden Rechner.</p>
<p>Also was ich haben möchte:<br />
Eine DLL, die einen Dialog enthält den ich irgendwann mit .doModal aufrufe.<br />
Diese soll die MFC statisch gelinkt haben, keine öffentliche MFC benutzen.</p>
<p>Wie fängt man an ? MFC Erweiterungs DLL erzeugen oder eine Normale und dann mit<br />
AFX_MANAGE_STATE(AfxGetStaticModuleState( )); weiterarbeiten ?</p>
<p>Mich interressiert auch, wie ich die DllMain sauber bekomme, das nicht die MFC<br />
DLLMain ignoriert wird durch ein Force. (nur durch InitInstance() und ExitInstance() ?)</p>
<p>Grüße<br />
thenoname</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204432/richtig-eine-statisch-gelinkte-mfc-dll-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 17:34:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204432.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Feb 2008 10:19:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Richtig eine statisch gelinkte MFC DLL erstellen ? on Sun, 03 Feb 2008 11:18:10 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe hier gerade mächtig Probleme mit dem Erzeugen einer DLL mit einem<br />
MFC Fenster. Als erstes bekomme ich das übliche _DLLMain Problem im Linker<br />
und wenn ich denn mit /FORCE mal weitermache, klappt es nicht auf jeden Rechner.</p>
<p>Also was ich haben möchte:<br />
Eine DLL, die einen Dialog enthält den ich irgendwann mit .doModal aufrufe.<br />
Diese soll die MFC statisch gelinkt haben, keine öffentliche MFC benutzen.</p>
<p>Wie fängt man an ? MFC Erweiterungs DLL erzeugen oder eine Normale und dann mit<br />
AFX_MANAGE_STATE(AfxGetStaticModuleState( )); weiterarbeiten ?</p>
<p>Mich interressiert auch, wie ich die DllMain sauber bekomme, das nicht die MFC<br />
DLLMain ignoriert wird durch ein Force. (nur durch InitInstance() und ExitInstance() ?)</p>
<p>Grüße<br />
thenoname</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448395</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Sun, 03 Feb 2008 11:18:10 GMT</pubDate></item><item><title><![CDATA[Reply to Richtig eine statisch gelinkte MFC DLL erstellen ? on Sun, 03 Feb 2008 16:44:25 GMT]]></title><description><![CDATA[<p>Die DllMain wird (wenn Du keine Extension DLL) erzeugst durch die MFC gestellt.</p>
<p>Also: Keine DllMain für Dich!<br />
Alles wird durch das CWinApp Objekt der MFC abgedeckt. Letten Endes instanziiert die MFC dann das CWinApp Objekt und ruft InitInstance auf.<br />
Mit der MFC benötigst Du keine DLL-Main!</p>
<p>Eine Erweiterungs DLL ist nicht das was Du willst, also Standard DLL, außer Du möchtest einen vollen Klassenexport und Einbindung in ein anderes MFC Programm. Extension DLLs kann man auch nicht statisch binden.</p>
<p>Du musst immer AFX_MANAGE_STATE verwenden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448593</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 03 Feb 2008 16:44:25 GMT</pubDate></item><item><title><![CDATA[Reply to Richtig eine statisch gelinkte MFC DLL erstellen ? on Sun, 03 Feb 2008 17:16:50 GMT]]></title><description><![CDATA[<p>Hallo, danke für die klaren Aussagen.<br />
Ich muss also statt eine DLLMAIN zu erzeugen die beiden Funktionen InitInstance() und ExitInstance() verwenden.</p>
<blockquote>
<p>Du musst immer AFX_MANAGE_STATE verwenden!</p>
</blockquote>
<p>Beim Erzeugen einer statischen DLL kommt merkwürdigerweise folgender verwirrender Text:</p>
<blockquote>
<p>//<br />
//TODO: Wenn diese DLL dynamisch mit MFC-DLLs verknüpft ist,<br />
// muss für alle aus dieser DLL exportierten Funktionen, die in<br />
// MFC aufgerufen werden, das AFX_MANAGE_STATE-Makro<br />
// am Anfang der Funktion hinzugefügt werden.<br />
//<br />
// Beispiel:<br />
//<br />
// extern &quot;C&quot; BOOL PASCAL EXPORT ExportedFunction()<br />
// {<br />
// AFX_MANAGE_STATE(AfxGetStaticModuleState());<br />
// // Hier normaler Funktionsrumpf<br />
// }<br />
//<br />
// Es ist sehr wichtig, dass dieses Makro in jeder Funktion<br />
// vor allen MFC-Aufrufen angezeigt wird. Dies bedeutet,<br />
// dass es als erste Anweisung innerhalb der<br />
// Funktion angezeigt werden muss, sogar vor jeglichen Deklarationen von Objektvariablen,<br />
// da ihre Konstruktoren Aufrufe in die MFC-DLL generieren<br />
// könnten.<br />
//<br />
// Siehe Technische Hinweise für MFC 33 und 58 für weitere<br />
// Details.<br />
//</p>
</blockquote>
<p>Also wenn ich es richtig lese, brauche ich AFX_MANAGE_STATE in einer statischen DLL nicht ? Warum dann überhaupt die Meldung ?</p>
<p>Grüße<br />
thenoname</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448613</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Sun, 03 Feb 2008 17:16:50 GMT</pubDate></item><item><title><![CDATA[Reply to Richtig eine statisch gelinkte MFC DLL erstellen ? on Mon, 04 Feb 2008 08:42:26 GMT]]></title><description><![CDATA[<p>OK ich korrigiere mich: Du <strong>sollst</strong> immer AFX_MANAGE_STATE verwenden.</p>
<p>Es ist richtig, dass bei einer statischen DLL die Ressource-Handles immer richtig gesetzt werden. Das Makro wird zum Qusai-Noop (es passiert immer noch was).</p>
<p>Ich halte jedoch in diesem Fall jedoch nichts von Weglassen, nachher stellst Du Deine DLL auf shared MFC DLL um und schon geht nichts mehr...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448878</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 04 Feb 2008 08:42:26 GMT</pubDate></item></channel></rss>