<?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[DllMain doppelt definier?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Dll erstellt (VC++ unter VS 2005). Nun wollte ich den eigenen Pfad der DLL herausfinden, was man ja für gewöhnlich in der DllMain abhandeln muss:</p>
<pre><code class="language-cpp">BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
  if (dwReason == DLL_PROCESS_ATTACH)
  {
    char ModuleName[2048];
    DWORD size = GetModuleFileName((HMODULE)hModule, ModuleName, sizeof(ModuleName));
    if (size &gt; sizeof(ModuleName) || size == 0)
    {
      ModuleName[0] = '\0';
    }
    else
    {
      PathRemoveFileSpec(ModuleName);
    }
    g_DllDir = ModuleName;
  }
  return TRUE;
}
</code></pre>
<p>Ursprünglich verfügte die Dll ja nur über eine _tmain-Funktion (vom Assistenten so generiert). Jetzt, nach Ergänzung der DllMain-Funktion meckert der Linker beim Übersetzen im Release-Mode mit folgender Meldung:</p>
<pre><code>mfcs80.lib(dllmodul.obj) : error LNK2005: _DllMain@12 ist bereits in MeineBspLib.obj definiert.
</code></pre>
<p>(MeineBspLib ist meine DLL mit der neuen DllMain-Funktion)<br />
Im Debug-Mode wird alles fehlerfrei übersetzt. Im Release-Mode jedoch nicht.<br />
Die Konfigurationen für beide Modes stimmen weitestgehend überein.</p>
<p>Was kann ich tun? Ich brauche die DllMain hier, um den Pfadnamen der Dll zu bekommen - oder kennt da jemand noch eine Alternative?</p>
<p>Besten Dank bereits im Voraus für hilfreiche Tipps<br />
Wes</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197332/dllmain-doppelt-definier</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 16:08:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197332.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Nov 2007 11:57:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DllMain doppelt definier? on Fri, 09 Nov 2007 11:57:54 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Dll erstellt (VC++ unter VS 2005). Nun wollte ich den eigenen Pfad der DLL herausfinden, was man ja für gewöhnlich in der DllMain abhandeln muss:</p>
<pre><code class="language-cpp">BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
  if (dwReason == DLL_PROCESS_ATTACH)
  {
    char ModuleName[2048];
    DWORD size = GetModuleFileName((HMODULE)hModule, ModuleName, sizeof(ModuleName));
    if (size &gt; sizeof(ModuleName) || size == 0)
    {
      ModuleName[0] = '\0';
    }
    else
    {
      PathRemoveFileSpec(ModuleName);
    }
    g_DllDir = ModuleName;
  }
  return TRUE;
}
</code></pre>
<p>Ursprünglich verfügte die Dll ja nur über eine _tmain-Funktion (vom Assistenten so generiert). Jetzt, nach Ergänzung der DllMain-Funktion meckert der Linker beim Übersetzen im Release-Mode mit folgender Meldung:</p>
<pre><code>mfcs80.lib(dllmodul.obj) : error LNK2005: _DllMain@12 ist bereits in MeineBspLib.obj definiert.
</code></pre>
<p>(MeineBspLib ist meine DLL mit der neuen DllMain-Funktion)<br />
Im Debug-Mode wird alles fehlerfrei übersetzt. Im Release-Mode jedoch nicht.<br />
Die Konfigurationen für beide Modes stimmen weitestgehend überein.</p>
<p>Was kann ich tun? Ich brauche die DllMain hier, um den Pfadnamen der Dll zu bekommen - oder kennt da jemand noch eine Alternative?</p>
<p>Besten Dank bereits im Voraus für hilfreiche Tipps<br />
Wes</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400241</guid><dc:creator><![CDATA[Wesley67]]></dc:creator><pubDate>Fri, 09 Nov 2007 11:57:54 GMT</pubDate></item><item><title><![CDATA[Reply to DllMain doppelt definier? on Sun, 11 Nov 2007 17:54:13 GMT]]></title><description><![CDATA[<p>Bei einer Dll mit der MFC musst Du die wie bei einer EXE eine eigene von CWinApp abgeleitete Klasse bauen. Diese wird bei Laden der DLL instanziiert und InitInstance wird aus´geführt.</p>
<p>Die DllMain ist innherhalb der MFC selbst verwendet. Du darfst Sie nicht überschreiben und kannst dies auch nicht. Das Framework stellt die entsprechende Funktion. Du erzeugst nur die entsprechenden Klassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401520</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 11 Nov 2007 17:54:13 GMT</pubDate></item></channel></rss>