<?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[Variabeln in DLL]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Dll gemacht, in welcher ich einen globalen Char Array deklariert habe. Die Dll enthaltet noch zwei Funktionen welche den Array bearbeiten. Wenn ich jedoch die eine Funktion aufrufe und diese den Array mit Daten füllt und ich danach die andere Funktion aufrufe sind die Daten im Array verlorren. Wiso ist das so?<br />
Ich verwende den Borland C++ Builder 6.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/137823/variabeln-in-dll</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Jul 2026 01:04:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/137823.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Feb 2006 07:04:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variabeln in DLL on Tue, 21 Feb 2006 07:04:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Dll gemacht, in welcher ich einen globalen Char Array deklariert habe. Die Dll enthaltet noch zwei Funktionen welche den Array bearbeiten. Wenn ich jedoch die eine Funktion aufrufe und diese den Array mit Daten füllt und ich danach die andere Funktion aufrufe sind die Daten im Array verlorren. Wiso ist das so?<br />
Ich verwende den Borland C++ Builder 6.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/999048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/999048</guid><dc:creator><![CDATA[Aristoteles]]></dc:creator><pubDate>Tue, 21 Feb 2006 07:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to Variabeln in DLL on Tue, 21 Feb 2006 13:26:26 GMT]]></title><description><![CDATA[<p>Ich glaube, hier sind mehr Infos notwendig. Ausserdem stellt sich die Frage, ob WinAPI da Abhilfe bringt.</p>
<p>1. Du solltest vielleicht mal im Kleinen testen. Sprich mach Dir eine neue CPP mit einem globalen Array und zwei Funktionen und schreibe und lese in dem Array.<br />
2. Liegen die beiden Funktionen in der gleichen CPP? Wenn nicht, wie ist die Variable definiert (in einem Header?). Suche nach fälschlichen Definitionen mit dem gleichen Variablennamen.<br />
3. Wenn Dein kleiner Beispielcode auch nicht funktioniert, dann poste ihn doch einfach hier, dann kann man vielleicht mehr sagen.</p>
<p>Gruß André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/999373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/999373</guid><dc:creator><![CDATA[av_privat]]></dc:creator><pubDate>Tue, 21 Feb 2006 13:26:26 GMT</pubDate></item><item><title><![CDATA[Reply to Variabeln in DLL on Fri, 24 Feb 2006 16:43:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe, wie mir empfohlen wurde, das Programm einmal im kleinen getestet. In der original DLL liesst die erste Funktion aus einer Datei und speichert diese im besagten Array, die zweite Funktion ist eine Hook-Funktion. Wenn ich das Ganze nun einmal mit einer anderen Funktiobn teste (also nicht mit der Hook-Funktion sondern einfach mit einer Test-Funktion) funktioniert der globale Array tatellos. Wiso ist dies so? Ich sende hier noch den Quellcode:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

char Schreibvorlage[2048];

__declspec (dllexport) LRESULT CALLBACK dateiladen(void);
__declspec (dllexport) LRESULT CALLBACK HookFunktion(int,WPARAM,LPARAM);

int WINAPI DLLMain(HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
return TRUE;
}

/* Die Folgende Funktion liesst aus einer Datei und speichert die Daten im globalen Array Schreibvorlage*/

__declspec (dllexport) LRESULT CALLBACK dateiladen(void)
{
static OPENFILENAME ofn;
HANDLE hFile;
int dateigroesse;
DWORD gelesenebytes;
static char Dateiname[256], Pfad[256];
const char szFilter[] = &quot;Schreibvorlage(*.TXT)\0*.txt\0\0&quot;;
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = FindWindow(NULL,&quot;Gosch&quot;);
ofn.hInstance=NULL;
ofn.lpstrFilter=szFilter;
ofn.lpstrCustomFilter=NULL;
ofn.nMaxCustFilter=0;
ofn.nFilterIndex=0,
ofn.lpstrFile=Pfad;
ofn.nMaxFile=MAX_PATH;
ofn.lpstrFileTitle=NULL;
ofn.nMaxFileTitle=MAX_PATH;
ofn.lpstrInitialDir=NULL;
ofn.lpstrTitle=Dateiname;
ofn.Flags=OFN_HIDEREADONLY | OFN_CREATEPROMPT;
ofn.nFileOffset=0;
ofn.nFileExtension=0;
ofn.lpstrDefExt=&quot;txt&quot;;
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;
ofn.lpTemplateName =NULL;
GetOpenFileName(&amp;ofn);
hFile=CreateFile(Pfad,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
dateigroesse=GetFileSize(hFile,NULL);
ReadFile(hFile,Schreibvorlage,dateigroesse,&amp;gelesenebytes,NULL);
CloseHandle(hFile);
return 0;
}

/*Die Folgende Funktion ist eine Hook-Funktion, wenn diese Funktion aufgerufen wird, ist der globale Array leer!*/

__declspec (dllexport) LRESULT CALLBACK HookFunktion(int nCode, WPARAM wParam, LPARAM lParam)
{

if(nCode&lt;0)
CallNextHookEx((void*)WH_GETMESSAGE,nCode,wParam,lParam);

switch(nCode)
{
case HC_ACTION:
break;
default:
break;
}
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1002174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1002174</guid><dc:creator><![CDATA[Aristoteles]]></dc:creator><pubDate>Fri, 24 Feb 2006 16:43:15 GMT</pubDate></item><item><title><![CDATA[Reply to Variabeln in DLL on Tue, 28 Feb 2006 11:14:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin mir nicht sicher, da ich mit dem Speichermanagement über DLL- und/oder Prozessgrenzen nicht so genau auskenne. Aber ich stelle mal einige vermutungen an.</p>
<p>Du lädts von beiden rufenden Stellen die DLL neu mit LoadLibrary und gibts sie sofort nach dem rufen der benötigten Funktion wieder frei. Ich kann nur vermuten, aber ich nehme an, dass dadruch die DLL entladen wird und beim zweiten mal laden neu geladen wird. Dadurch wird das Array neu alokiert.</p>
<p>Gruß André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1004922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1004922</guid><dc:creator><![CDATA[av_privat]]></dc:creator><pubDate>Tue, 28 Feb 2006 11:14:02 GMT</pubDate></item></channel></rss>