<?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[CALLBACK-Funktionen über DLL geht nicht?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich in meiner Anwedung eine Klasse der man einen Funktionszeiger übergibt und den diese dann bei Bedarf aufruft. Wie es so kommt haben wir diese Klasse zusammen mit eine paar anderen Dingen in eine dynamische LIB (als mit *.DLL) ausgelagert um die Sachen weitgehend unabhängig voneinader weiterentwickeln zu können.<br />
Das sieht ungefähr so aus:</p>
<pre><code class="language-cpp">//DLL
typedef void __stdcall DSB_EVENT(int evType, void* evBlock, int evBlockSize );
class __declspec(dllexport) DSBMessager
{
    bool CreateDSBEvent( /* ... unwichtig*/ , DSB_EVENT* pEvCB )
    {
        ...
        this-&gt;m_pEventCB = pEvCB;
        ...
    }
    ...
};
</code></pre>
<p>Allerdings funktionierte dann der ehemals perfekt funktionierende Aufruf der Funktionszeiger nicht mehr:<br />
Das sieht so aus:</p>
<pre><code class="language-cpp">...
this-&gt;m_pActiveEvent( m_EvID, m_MSG, sizeof(m_MSG) );
</code></pre>
<p>Wie gesagt: Das hat alles perfekt funktioniert als es noch keine extra Lib war.<br />
Die Callbacks werden auch eindeutig aufgerufen, das habe ich im Debugger festgestellt, aber in der Exe die den Funktionszeiger übergeben hat kommt einfach nichts an.</p>
<p>Möglicherweise weiß jemand woran das liegt und was man dagegen tun kann.</p>
<p>Danke!!</p>
<p>Sven.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/105296/callback-funktionen-über-dll-geht-nicht</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 00:02:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/105296.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Mar 2005 05:34:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CALLBACK-Funktionen über DLL geht nicht? on Tue, 29 Mar 2005 05:34:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich in meiner Anwedung eine Klasse der man einen Funktionszeiger übergibt und den diese dann bei Bedarf aufruft. Wie es so kommt haben wir diese Klasse zusammen mit eine paar anderen Dingen in eine dynamische LIB (als mit *.DLL) ausgelagert um die Sachen weitgehend unabhängig voneinader weiterentwickeln zu können.<br />
Das sieht ungefähr so aus:</p>
<pre><code class="language-cpp">//DLL
typedef void __stdcall DSB_EVENT(int evType, void* evBlock, int evBlockSize );
class __declspec(dllexport) DSBMessager
{
    bool CreateDSBEvent( /* ... unwichtig*/ , DSB_EVENT* pEvCB )
    {
        ...
        this-&gt;m_pEventCB = pEvCB;
        ...
    }
    ...
};
</code></pre>
<p>Allerdings funktionierte dann der ehemals perfekt funktionierende Aufruf der Funktionszeiger nicht mehr:<br />
Das sieht so aus:</p>
<pre><code class="language-cpp">...
this-&gt;m_pActiveEvent( m_EvID, m_MSG, sizeof(m_MSG) );
</code></pre>
<p>Wie gesagt: Das hat alles perfekt funktioniert als es noch keine extra Lib war.<br />
Die Callbacks werden auch eindeutig aufgerufen, das habe ich im Debugger festgestellt, aber in der Exe die den Funktionszeiger übergeben hat kommt einfach nichts an.</p>
<p>Möglicherweise weiß jemand woran das liegt und was man dagegen tun kann.</p>
<p>Danke!!</p>
<p>Sven.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/754597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/754597</guid><dc:creator><![CDATA[licher]]></dc:creator><pubDate>Tue, 29 Mar 2005 05:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to CALLBACK-Funktionen über DLL geht nicht? on Fri, 01 Apr 2005 11:55:43 GMT]]></title><description><![CDATA[<p>Wenn ich es richtig verstehe versucht deine DLL eine Funktion der EXE über einen Funktionszeiger aufzurufen.<br />
Das kann nicht funktionieren, weil sich die DLL in einem eigenen Adressraum befindet. Es kann nur eine EXE Funktionen einer DLL aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/757342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/757342</guid><dc:creator><![CDATA[amartin755]]></dc:creator><pubDate>Fri, 01 Apr 2005 11:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to CALLBACK-Funktionen über DLL geht nicht? on Sun, 03 Apr 2005 18:54:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke das noch jemand geantwortet hat.</p>
<p>amartin755 schrieb:</p>
<blockquote>
<p>Wenn ich es richtig verstehe versucht deine DLL eine Funktion der EXE über einen Funktionszeiger aufzurufen.<br />
Das kann nicht funktionieren, weil sich die DLL in einem eigenen Adressraum befindet. Es kann nur eine EXE Funktionen einer DLL aufrufen.</p>
</blockquote>
<p>Sowas hab ich mir schon gedacht.<br />
Ich frage mich nur warum ich dann z.B. der WinApi-Funktion &quot;SetTimer&quot; eine TIMERPROC übergeben kann, die dann auch per Callback aufgerufen wird, obwohl Aufruf ja auch es irgendeinem Windows-Prozess (ergo aus einem anderen Adressraum) geschieht. Oder wie ist das?</p>
<p>Und wenn ich eine statische, statt dynamische, Lib mache, sollte es doch auch wieder gehen. (oder nicht?)</p>
<p>Sven.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/759245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/759245</guid><dc:creator><![CDATA[licher]]></dc:creator><pubDate>Sun, 03 Apr 2005 18:54:44 GMT</pubDate></item></channel></rss>