<?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[Globale Variablen und Shared Memory in dll (dev c++)]]></title><description><![CDATA[<p>Hallo,</p>
<p>bisher wurde mir hier immer wunderbar geholfen. Also komme ich mit weiteren Fragen:</p>
<p>1.) In einem anderen Thread wurd ich darauf aufmerksam gemacht, dass meine Deklaration von global gültigen Variablen nicht gut wäre. Leider fand ich bis heute keine Informationen darüber, wo und wie man in einem dll-Projekt am besten global gültige Variablen deklariert. Deshalb hier meine Frage an die Profis: Wo und wie...? <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>2.) Eine dieser global gültigen Variablen soll ein SHARED Element sein, das jer Instanz der dell zur Verfügung steht. In dev C++ habe ich folgende Möglichkeiten gefunden:<br />
dll.h</p>
<pre><code class="language-cpp">...
#define SHARED __attribute__((section(&quot;shared&quot;),shared))
....
</code></pre>
<p>dllmain.cpp</p>
<pre><code class="language-cpp">...
#include &quot;dll.h&quot;
....
BOOL APIENTRY DllMain (...)
{...}

bool meineVariable SHARED = false;
...
</code></pre>
<p>oder direkt in einem Aufwasch:</p>
<pre><code class="language-cpp">bool meineVariable __atribute__((section(&quot;shared&quot;),shared)) = false;
</code></pre>
<p>Leider meldet mein aufrufendes C#-Programm eine Zugriffsverletzung auf &quot;geschützen&quot; Speicher...<br />
Edit: und zwar jedes mal, wenn die variable gelesen oder geschrieben wird.</p>
<p>Danke Jens</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305151/globale-variablen-und-shared-memory-in-dll-dev-c</link><generator>RSS for Node</generator><lastBuildDate>Wed, 24 Jun 2026 07:36:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305151.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Jun 2012 11:09:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Globale Variablen und Shared Memory in dll (dev c++) on Fri, 22 Jun 2012 15:15:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>bisher wurde mir hier immer wunderbar geholfen. Also komme ich mit weiteren Fragen:</p>
<p>1.) In einem anderen Thread wurd ich darauf aufmerksam gemacht, dass meine Deklaration von global gültigen Variablen nicht gut wäre. Leider fand ich bis heute keine Informationen darüber, wo und wie man in einem dll-Projekt am besten global gültige Variablen deklariert. Deshalb hier meine Frage an die Profis: Wo und wie...? <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>2.) Eine dieser global gültigen Variablen soll ein SHARED Element sein, das jer Instanz der dell zur Verfügung steht. In dev C++ habe ich folgende Möglichkeiten gefunden:<br />
dll.h</p>
<pre><code class="language-cpp">...
#define SHARED __attribute__((section(&quot;shared&quot;),shared))
....
</code></pre>
<p>dllmain.cpp</p>
<pre><code class="language-cpp">...
#include &quot;dll.h&quot;
....
BOOL APIENTRY DllMain (...)
{...}

bool meineVariable SHARED = false;
...
</code></pre>
<p>oder direkt in einem Aufwasch:</p>
<pre><code class="language-cpp">bool meineVariable __atribute__((section(&quot;shared&quot;),shared)) = false;
</code></pre>
<p>Leider meldet mein aufrufendes C#-Programm eine Zugriffsverletzung auf &quot;geschützen&quot; Speicher...<br />
Edit: und zwar jedes mal, wenn die variable gelesen oder geschrieben wird.</p>
<p>Danke Jens</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2226136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2226136</guid><dc:creator><![CDATA[xenayoo]]></dc:creator><pubDate>Fri, 22 Jun 2012 15:15:53 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und Shared Memory in dll (dev c++) on Fri, 22 Jun 2012 15:21:48 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin selbst drauf gekommen: Das Problem lag nich in der Shared Section. Soweit kam es garnicht: Das Problem lag darin, dass ich von C# aus einen String übergeben habe und die Funktion diesen als C++ string engegennehmen wollte. Das funktioniert natürlich nicht.<br />
Die Lösung sieht so aus:</p>
<pre><code class="language-cpp">void DLLEXPORT InitDLL(const char *sParameter, int iWert)
{
    ....
}
</code></pre>
<p>Da ich mit Zeigern und Referenzen in C++ noch nicht so ganz warm geworden bin, bräuchte ich mal jemanden, der mir erklärt, was im genannten Beispiel passiert und wie ich aus const char *sParameter wieder einen C++-String mache.</p>
<p>Danke</p>
<p>Jens</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2226247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2226247</guid><dc:creator><![CDATA[xenayoo]]></dc:creator><pubDate>Fri, 22 Jun 2012 15:21:48 GMT</pubDate></item></channel></rss>