<?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[Shared Variablen in DLL export fähig ?]]></title><description><![CDATA[<p>Hallo,</p>
<p>nachdem Unix-Tom nun schon mehrmals seinen Uni-Code:</p>
<pre><code class="language-cpp">pragma data_seg (&quot;shared&quot;)

char globstring[256][64] = {'\0'};
#pragma data_seg()
#pragma comment(linker,&quot;/SECTION:shared,RWS&quot;)

CString CEinstellungen::GetGlobString(int index)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

if (index &gt;255) index = 255;
CString retglobval;
retglobval.Format(&quot;%s&quot;,globstring[index]);
    return retglobval;
}

int CEinstellungen::SetGlobString(CString mglobstring,int index)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    if (index &gt;255) index = 255;
    sprintf(globstring[index],mglobstring);

return 1;
}
</code></pre>
<p>hier in das Forum geschrieben hat quält mich nur noch eine Frage:</p>
<p>kann man nun diese Art von share Variablen im Export declarieren, und<br />
direkt darauf zugreifen, oder MUSS eine Reader und Writer Funktion<br />
hinzugefügt werden ?<br />
Muss man vielleicht eine bestimmte Art des Exportes nutzen ?<br />
(natürlich Lade ich vorher die DLL und declariere den Rest ..)</p>
<p>Wenn ich das richtig sehe wird mit dem sprintf der geteilt Speicherplatz<br />
beschrieben ... wozu dann der Datenabgleich in SetGlobalString ?</p>
<p>Und zu guter Letzt:<br />
warum nicht einfach globstring[index]=mglobstring ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/83609/shared-variablen-in-dll-export-fähig</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 11:39:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/83609.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Aug 2004 23:26:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Shared Variablen in DLL export fähig ? on Sun, 22 Aug 2004 23:34:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>nachdem Unix-Tom nun schon mehrmals seinen Uni-Code:</p>
<pre><code class="language-cpp">pragma data_seg (&quot;shared&quot;)

char globstring[256][64] = {'\0'};
#pragma data_seg()
#pragma comment(linker,&quot;/SECTION:shared,RWS&quot;)

CString CEinstellungen::GetGlobString(int index)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

if (index &gt;255) index = 255;
CString retglobval;
retglobval.Format(&quot;%s&quot;,globstring[index]);
    return retglobval;
}

int CEinstellungen::SetGlobString(CString mglobstring,int index)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    if (index &gt;255) index = 255;
    sprintf(globstring[index],mglobstring);

return 1;
}
</code></pre>
<p>hier in das Forum geschrieben hat quält mich nur noch eine Frage:</p>
<p>kann man nun diese Art von share Variablen im Export declarieren, und<br />
direkt darauf zugreifen, oder MUSS eine Reader und Writer Funktion<br />
hinzugefügt werden ?<br />
Muss man vielleicht eine bestimmte Art des Exportes nutzen ?<br />
(natürlich Lade ich vorher die DLL und declariere den Rest ..)</p>
<p>Wenn ich das richtig sehe wird mit dem sprintf der geteilt Speicherplatz<br />
beschrieben ... wozu dann der Datenabgleich in SetGlobalString ?</p>
<p>Und zu guter Letzt:<br />
warum nicht einfach globstring[index]=mglobstring ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588704</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Sun, 22 Aug 2004 23:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to Shared Variablen in DLL export fähig ? on Mon, 23 Aug 2004 08:29:14 GMT]]></title><description><![CDATA[<blockquote>
<p>kann man nun diese Art von share Variablen im Export declarieren, und<br />
direkt darauf zugreifen, oder MUSS eine Reader und Writer Funktion<br />
hinzugefügt werden ?</p>
</blockquote>
<p>probiers doch aus, aber ich wusste gar nicht, dass man Variablen überhaupt exportieren kann, wie bekommt man dann die Adresse? Mhhh, bei Klassen solls ja auch gehen (es sagt ja ständig einer, dass man sie nicht exportieren soll)? Aber da wird ja keine Instanz, sondern die Definition exportiert?</p>
<blockquote>
<p>Wenn ich das richtig sehe wird mit dem sprintf der geteilt Speicherplatz<br />
beschrieben ... wozu dann der Datenabgleich in SetGlobalString ?</p>
</blockquote>
<p>meinst du SetGlobString? Dort wird doch nur geschaut, ob die grenzen vom Array nicht überschritten werden und dann der String hineinkopiert. (Wobei das so natürlich ziemlicher Mist ist, zu überprüfen ob nicht zuviele Strings gespeichert werden dann aber den ganzen String, egal wie Lang, hineinzukopieren)</p>
<blockquote>
<p>warum nicht einfach globstring[index]=mglobstring</p>
</blockquote>
<p>dann würde ja nur die Adresse von mglobstring in globstring[index] kopiert werden (nur diese 4 Bytes) es soll aber der &quot;Inhalt&quot; von mglobstring in den Speicher ab der Adresse globstring[index] kopiert werden.</p>
<p>Ach noch ein TIPP von mir (weils mich mal viel Zeit und Aufregung gekostet hat): die Variablen im geteilten Speicher MÜSSEN alle bei der Deklaration initialisiert werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588839</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Mon, 23 Aug 2004 08:29:14 GMT</pubDate></item><item><title><![CDATA[Reply to Shared Variablen in DLL export fähig ? on Mon, 23 Aug 2004 09:04:07 GMT]]></title><description><![CDATA[<p>Ich scheitere leider an der GetProcAdress Übergabe ...<br />
ein Integer ist nicht ein FarProc !!<br />
Ich frag mich nur, wie das dann mit der MSDN gemeint ist ?<br />
Da steht eindeutig was von Variablen .... evtl. Member auf Funktion ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588883</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Mon, 23 Aug 2004 09:04:07 GMT</pubDate></item><item><title><![CDATA[Reply to Shared Variablen in DLL export fähig ? on Mon, 23 Aug 2004 11:37:56 GMT]]></title><description><![CDATA[<p>Oh ja, steht wirklich drin</p>
<p>MSDN schrieb:</p>
<blockquote>
<p><strong>lpProcName</strong><br />
Pointer to a null-terminated string that specifies the function or variable name<br />
_____________</p>
<p><strong>Return Values</strong><br />
If the function succeeds, the return value is the address of the exported function or variable.</p>
</blockquote>
<p>ein einfacher Typecast nach TYPE* sollte also genügen, um aus FARPROC einen Zeiger auf deinen Typ zu erhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/589022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/589022</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Mon, 23 Aug 2004 11:37:56 GMT</pubDate></item></channel></rss>