<?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[Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet.]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich möchte in einer dll herausfinden in welchem Verzeichnis sie sich gerade befindet. Hat jemand ne Ahnung wie das geht?</p>
<p>Viele Grüße</p>
<p>Frederik</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/65620/verzeichnis-herausfinden-in-welchen-sich-die-aktuelle-dll-befindet</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 16:52:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/65620.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Feb 2004 12:47:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 12:47:39 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich möchte in einer dll herausfinden in welchem Verzeichnis sie sich gerade befindet. Hat jemand ne Ahnung wie das geht?</p>
<p>Viele Grüße</p>
<p>Frederik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464038</guid><dc:creator><![CDATA[Frederik]]></dc:creator><pubDate>Fri, 20 Feb 2004 12:47:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 12:51:32 GMT]]></title><description><![CDATA[<p>GetModuleFileName</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464049</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Fri, 20 Feb 2004 12:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 13:15:29 GMT]]></title><description><![CDATA[<p>Hallo CMatt,</p>
<p>vielen Dank für die Antwort. Könntest Du mir noch bei diesem Fehler helfen? Und ist der HANDLE in APIENTRY der richtige Handle?</p>
<pre><code class="language-cpp">HANDLE hDllHandle;
// Dll Einstiegspunkt.
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved) {
    switch (ul_reason_for_call)	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }

		hDllHandle = hModule;
    return TRUE;
}

int getCurrentDllPath(char *path) {
	path=(char *)malloc(4001);

	return GetModuleFileName(hDllHandle, path, 4000);
}
</code></pre>
<pre><code>Fehler:
c:\func\func.cpp(46) : error C2664: 'GetModuleFileNameA' : Konvertierung des Parameters 1 von 'void *' in 'struct HINSTANCE__ *' nicht moeglich
        Konvertierung von 'void*' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/464070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464070</guid><dc:creator><![CDATA[Frederik]]></dc:creator><pubDate>Fri, 20 Feb 2004 13:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 13:32:32 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">return GetModuleFileName( (void*) hDllHandle, path, 4000);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/464080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464080</guid><dc:creator><![CDATA[Xe]]></dc:creator><pubDate>Fri, 20 Feb 2004 13:32:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 13:38:03 GMT]]></title><description><![CDATA[<p>Vielen Dank Euch beiden. Es war</p>
<pre><code class="language-cpp">return GetModuleFileName((HINSTANCE__ *)hDllHandle, path, 4000);
</code></pre>
<p>Viele Grüße</p>
<p>Frederik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464084</guid><dc:creator><![CDATA[Frederik]]></dc:creator><pubDate>Fri, 20 Feb 2004 13:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 17:50:39 GMT]]></title><description><![CDATA[<p>Warum benutzt du malloc?<br />
malloc ist C, die C++ Variante lautet new. Allerdings sollte man es nicht so verwenden wie du es machst. Eine Funktion sollte ihren Speicher immer selbst freigeben oder bereits vorher allokierten benutzen.</p>
<p>p.s.:<br />
Es gibt eine sichere Methode um zu erkennen, ob jemand malloc richtig verwendet:</p>
<pre><code class="language-cpp">char* p = malloc(1);
</code></pre>
<p>Diese Zeile muss ohne Fehler kompilierbar sein. Das ist bei dir aber nicht der Fall, deswegen ist malloc fehl am Platz. <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/464247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464247</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Fri, 20 Feb 2004 17:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 18:04:42 GMT]]></title><description><![CDATA[<p>cd9000 schrieb:</p>
<blockquote>
<p>malloc ist C, die C++ Variante lautet new.</p>
</blockquote>
<p>Und wieder was gelernt. Bislang hätte ich malloc für gültiges C++ gehalten. Und wie lautet die C++ Variante für realloc? Ist das renew?</p>
<p>Jedenfalls sehe ich malloc ohne free. Außerdem hat hDllHandle den falschen Datentypen verpasst bekommen. Das muß HINSTANCE sein, oder von mir aus auch HMODULE, nicht aber HANDLE.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464256</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Fri, 20 Feb 2004 18:04:42 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 18:11:37 GMT]]></title><description><![CDATA[<p>Ok, man kann malloc auch in C++ benutzen, sollte es aber nicht tun.<br />
Konstruktoren werden nicht aufgerufen, VTables nicht angelegt, Konsequenz bleibt nicht erhalten (soll ich diesen Speicher mit free oder mit delete freigeben?).<br />
Nur in den allerseltensten Fällen gibt es Grund malloc zu benutzen. Dieser Fall muss aber gut begründet und kommentiert sein.<br />
Außerdem sollte man dann &lt;cstdlib&gt; und nicht &lt;stdlib.h&gt; einbinden und std::malloc benutzen.</p>
<p>Zum realloc: Was spricht gegen std::vector&lt;char&gt;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464260</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Fri, 20 Feb 2004 18:11:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 18:16:25 GMT]]></title><description><![CDATA[<p>cd9000 schrieb:</p>
<blockquote>
<p>Konstruktoren werden nicht aufgerufen, VTables nicht angelegt,</p>
</blockquote>
<p>Das ist bei einem char besonders wichtig, stimmt.</p>
<blockquote>
<p>Konsequenz bleibt nicht erhalten</p>
</blockquote>
<p>Doch, wenn Du Konsistent malloc benutzt, schon. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<blockquote>
<p>Zum realloc: Was spricht gegen std::vector&lt;char&gt;?</p>
</blockquote>
<p>Die STL, denn ich verwende die STL nicht und habe das auch in Zukunft nicht vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464263</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Fri, 20 Feb 2004 18:16:25 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 18:39:47 GMT]]></title><description><![CDATA[<p>-King- schrieb:</p>
<blockquote>
<p>cd9000 schrieb:</p>
<blockquote>
<p>Konstruktoren werden nicht aufgerufen, VTables nicht angelegt,</p>
</blockquote>
<p>Das ist bei einem char besonders wichtig, stimmt.</p>
</blockquote>
<p>Auf diese Antwort hab ich gewartet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>-King- schrieb:</p>
<blockquote>
<blockquote>
<p>Konsequenz bleibt nicht erhalten</p>
</blockquote>
<p>Doch, wenn Du Konsistent malloc benutzt, schon. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Das kannst du aber nicht, weil sich damit nur eingebaute Typen und PODs allokieren lassen, keine Klassen.</p>
<p>-King- schrieb:</p>
<blockquote>
<blockquote>
<p>Zum realloc: Was spricht gegen std::vector&lt;char&gt;?</p>
</blockquote>
<p>Die STL, denn ich verwende die STL nicht und habe das auch in Zukunft nicht vor.</p>
</blockquote>
<p>Solange du nicht MFC benutzt...<br />
Warum gefällt dir die STL nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464268</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Fri, 20 Feb 2004 18:39:47 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 19:03:55 GMT]]></title><description><![CDATA[<p>cd9000 schrieb:</p>
<blockquote>
<p>-King- schrieb:</p>
<blockquote>
<blockquote>
<p>Konsequenz bleibt nicht erhalten</p>
</blockquote>
<p>Doch, wenn Du Konsistent malloc benutzt, schon. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Das kannst du aber nicht, weil sich damit nur eingebaute Typen und PODs allokieren lassen, keine Klassen.</p>
</blockquote>
<p>Hmmm? Geht nicht sowas?</p>
<pre><code class="language-cpp">class CTest
{
private:
    int a;
public:
    CTest(){}
    void SetVal(int val){ a=val; }
};
</code></pre>
<p>Und dann irgendwo im Code:</p>
<pre><code class="language-cpp">CTest* test = (CTest*)malloc( sizeof(CTest) );
free( test );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/464277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464277</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Fri, 20 Feb 2004 19:03:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 19:05:49 GMT]]></title><description><![CDATA[<p>cd9000 schrieb:</p>
<blockquote>
<p>Das kannst du aber nicht, weil sich damit nur eingebaute Typen und PODs allokieren lassen, keine Klassen.</p>
</blockquote>
<p>Das Argument hat irgendwie etwas für sich. <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>cd9000 schrieb:</p>
<blockquote>
<p>Solange du nicht MFC benutzt...</p>
</blockquote>
<p>Aber nicht doch! <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>cd9000 schrieb:</p>
<blockquote>
<p>Warum gefällt dir die STL nicht?</p>
</blockquote>
<p>Ich habe meine Gründe. Ich werde jetzt aber nicht JEHOVA rufen, und ich werde mich nicht steinigen lassen (jedenfalls nicht jetzt, und schon gar nicht wegen sowas). Wir können das gern per Mail diskutieren, wenn Dich das tatsächlich interessiert, aber nicht hier.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464278</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Fri, 20 Feb 2004 19:05:49 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 19:11:13 GMT]]></title><description><![CDATA[<p>WebFritzi schrieb:</p>
<blockquote>
<p>Hmmm? Geht nicht sowas?</p>
</blockquote>
<p>Doch geht. Aber das kann man nun wirklich niemandem empfehlen. Ich bin mir sicher, daß cd9000 darauf hinaus wollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464281</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Fri, 20 Feb 2004 19:11:13 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 19:16:55 GMT]]></title><description><![CDATA[<p>WebFritzi schrieb:</p>
<blockquote>
<p>Hmmm? Geht nicht sowas?</p>
</blockquote>
<p>Wenn du mit &quot;geht&quot; meinst, dass es syntaktisch richtig ist (also kompiliert): Ja, siehe Kings posting.<br />
Wenn du damit meinst, das es semantisch richtig ist (sich also richtig verhält): Nein, da weder Konstruktor noch Destruktor aufgerufen werden.</p>
<p>Mit placement-new kann man das aber erreichen:</p>
<pre><code class="language-cpp">#include &lt;new&gt;

// ...

Test* p = new (malloc(sizeof(Test))) Test;
// ...
p-&gt;~Test();
free(p);
</code></pre>
<p>Sehr sinnvoll ist das nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/464283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464283</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Fri, 20 Feb 2004 19:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verzeichnis herausfinden, in welchen sich die aktuelle dll befindet. on Fri, 20 Feb 2004 23:43:32 GMT]]></title><description><![CDATA[<p>cd9000 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;new&gt;

// ...

Test* p = new (malloc(sizeof(Test))) Test;
// ...
p-&gt;~Test();
free(p);
</code></pre>
</blockquote>
<p>Jedes mal, wen ich sowas sehe, weiß ich wieder, warum ich Delphi benutze. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Sorry, nur mal so am Rande, bitte keinen Flamewar anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464400</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 20 Feb 2004 23:43:32 GMT</pubDate></item></channel></rss>