<?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[Zugriff auf Variable ohne Speicheradresse zu kennen]]></title><description><![CDATA[<p>Hallo!<br />
Ich habe ein etwas kompliziertes Problem und hoffe mir kann jemand helfen es zu lösen.<br />
Ich schreibe hier an einem Programm in C/C++. Dieses lädt eine dynamische Bibliothek nach und ruft in dieser Bibliothek eine Funktion auf.<br />
Jetzt mein Problem: Ich muss von der dynamischen Bibliothek aus auf eine Variable im Hauptprogramm zugreifen (um genau zu sein ist es ein Objekt), kenne aber innerhalb der dynamischen Bibliothek nicht die Speicheradresse dieser Variable. Ich kann leider auch nicht die Speicheradresse als Paramater an die Funktion übergeben, da ich an dem Funktionsaufruf nichts ändern darf / kann.</p>
<p>Kennt da eventuel jemand eine Lösung, wie ich trotsdem an die Variable drankommen könnte?</p>
<p>MfG<br />
FloFri</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192886/zugriff-auf-variable-ohne-speicheradresse-zu-kennen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 23:10:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192886.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Sep 2007 15:39:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf Variable ohne Speicheradresse zu kennen on Wed, 19 Sep 2007 15:39:36 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich habe ein etwas kompliziertes Problem und hoffe mir kann jemand helfen es zu lösen.<br />
Ich schreibe hier an einem Programm in C/C++. Dieses lädt eine dynamische Bibliothek nach und ruft in dieser Bibliothek eine Funktion auf.<br />
Jetzt mein Problem: Ich muss von der dynamischen Bibliothek aus auf eine Variable im Hauptprogramm zugreifen (um genau zu sein ist es ein Objekt), kenne aber innerhalb der dynamischen Bibliothek nicht die Speicheradresse dieser Variable. Ich kann leider auch nicht die Speicheradresse als Paramater an die Funktion übergeben, da ich an dem Funktionsaufruf nichts ändern darf / kann.</p>
<p>Kennt da eventuel jemand eine Lösung, wie ich trotsdem an die Variable drankommen könnte?</p>
<p>MfG<br />
FloFri</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368657</guid><dc:creator><![CDATA[FloFri]]></dc:creator><pubDate>Wed, 19 Sep 2007 15:39:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Variable ohne Speicheradresse zu kennen on Wed, 19 Sep 2007 15:47:13 GMT]]></title><description><![CDATA[<p>siehe RTLD_GLOBAL</p>
<p><a href="http://man.cx/dlopen" rel="nofollow">dlopen manpage</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368664</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Wed, 19 Sep 2007 15:47:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Variable ohne Speicheradresse zu kennen on Wed, 19 Sep 2007 15:53:04 GMT]]></title><description><![CDATA[<p>Hm, ich versteh das Flag zwar nicht ganz, aber wenn ich das richtig lese, kann man damit auf Variablen innerhalb der Bibliothek zugreifen, ich will aber genau den anderen Weg: ich will von der Bibliothek aus auf eine variable im hauptprogramm zugreifen.</p>
<p>Dazu kommt noch, dass ich auf den aufruf von dlopen / LoadLibrary keinen zugriff habe, da der in einer zum hauptprogramm statisch gelinkten bibliothek geschiet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368670</guid><dc:creator><![CDATA[FloFri]]></dc:creator><pubDate>Wed, 19 Sep 2007 15:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Variable ohne Speicheradresse zu kennen on Wed, 19 Sep 2007 15:57:16 GMT]]></title><description><![CDATA[<p>FloFri schrieb:</p>
<blockquote>
<p>Hm, ich versteh das Flag zwar nicht ganz, aber wenn ich das richtig lese, kann man damit auf Variablen innerhalb der Bibliothek zugreifen, ich will aber genau den anderen Weg: ich will von der Bibliothek aus auf eine variable im hauptprogramm zugreifen.</p>
</blockquote>
<p>Ne, das hast du falsch verstanden. Mit RTLD_GLOBAL werden alle Symbole global exportiert =&gt; Du kannst auch aus der Library auf Symbole im Hauptprogramm zugreifen.</p>
<blockquote>
<p>Dazu kommt noch, dass ich auf den aufruf von dlopen / LoadLibrary keinen zugriff habe, da der in einer zum hauptprogramm statisch gelinkten bibliothek geschiet.</p>
</blockquote>
<p>Ohne die Adresse zu kennen wirst du die Variable einfach nicht ändern können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368681</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Wed, 19 Sep 2007 15:57:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Variable ohne Speicheradresse zu kennen on Wed, 19 Sep 2007 16:07:27 GMT]]></title><description><![CDATA[<p>Deswegen frag ich mich ja, wie ich an die Adresse rankommen könnte <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="🙄"
    /><br />
Ich hatte eben den einfall, dass über ein Memory Mapped File zu machen, aber vieleicht gibts ja noch was anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368687</guid><dc:creator><![CDATA[FloFri]]></dc:creator><pubDate>Wed, 19 Sep 2007 16:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Variable ohne Speicheradresse zu kennen on Wed, 19 Sep 2007 19:19:41 GMT]]></title><description><![CDATA[<p>Memory Mapped File sollte gehen, ja.</p>
<p>Evtl. ginge es auch über GetProcAddress: man kann aus einer .EXE einfach mit __declspec(dllexport) Symbole exportieren. Diese müssten sich dann in der DLL über GetProcAddress holen lassen.<br />
Das für GetProcAddress nötige HMODULE bekommst du über GetModuleHandle(0).</p>
<p>Kannst du z.B. eine Funktion exportieren die die Adresse des Objektes zurückgibt. Wenn du die extern &quot;C&quot; bekommt die auch keinen wild dekorierten Namen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368806</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 19 Sep 2007 19:19:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Variable ohne Speicheradresse zu kennen on Wed, 19 Sep 2007 21:39:27 GMT]]></title><description><![CDATA[<p>Hm, stimmt, warum bin ich da nicht selber drauf gekommen <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="🙄"
    /><br />
Da mein Hauptprogramm eigendlich eh schon in einer dynamischen Bibliothek ist, sollte das eigendlich kein Problem sein.</p>
<p>Noch eine Folgefrage: Ist eigendlich eine statische Membervariable im gesammten Addressraum eines Prozesses die gleiche oder nur im selben Programm. Sprich: wenn ich in meinem Hauptprogramm und in meiner dynamischen Bibliothek jeweils die gleiche Klasse mit einer Statischen Membervariable nutze, hat die dann bei beiden den gleichen Wert oder sind die von einander unabhängig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368895</guid><dc:creator><![CDATA[FloFri]]></dc:creator><pubDate>Wed, 19 Sep 2007 21:39:27 GMT</pubDate></item></channel></rss>